Как вывести нужную строку (оператор LIKE)?

Таблица содержит 2 столбца.
Первый столбец - идентификаторы пользователей. Формируются php implode (нет запятой в конце строки, но если нужно можно и поставить).
Второй столбец - информация.
61c1fdc2d8c94221065710.jpeg
Нужно чтобы каждому пользователю выводилась та строка, где есть его id.
Например 28 - Информация 2 и Информация 3.

Мой SQL запрос работает некорректно
SELECT * FROM `table` WHERE `users_id` LIKE '%28%'; // или %28 или 28%


Я никак не могу выбрать именно совпадение 28.
Ведь есть 228. Изменяем запрос - ставим % спереди выводит 288

Как вывести нужную строку (оператор LIKE)?
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
SELECT * FROM `table` WHERE FIND_IN_SET('28', `users_id`) > 0


Если уж очень сильно хочется именно LIKE, то

SELECT * FROM `table` WHERE (`users_id` LIKE '28,%' OR `users_id` LIKE '%,28,%' OR `users_id` LIKE '%,28')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Спустить это дерьмо в унитаз и сделать БД в нормальной форме.
Идентификаторы пользователей лежат в отдельной таблице.
После этого достаются тупым джойном без всяких лайков

должна быть ещё одна таблица, в которой два поля, information_id и user_id
и три записи
2|29
2|28
2|31
и тупой запрос,
SELECT i.* FROM information i, users_info ui WHERE i.id=ui.information_id and ui.user_id=28;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы