MySQL Выберите данные из многованочного атрибута
-
11-12-2019 - |
Вопрос
Как я могу запустить Select Query на многоватальном атрибуте?У MySQL есть функция, выберите определенные данные из многовестности?Большая помощь ценится.Вот образец проблемы:
таблица
userid groups
-------------------
2 2,3,5
4 1
9 2,5,10
.
dataType - char(250)
для groups
Я хочу сделать запрос, чтобы выбрать все userid
s, которые принадлежат к группе 5, в этом примере это было бы пользователя 2 и 9. Итак:
userid
------
2
9
.
Любой способ пойти с этим с помощью запроса MySQL?или с php / mysql?
Решение
Если установлен тип данных groups
Вы можете использовать
SELECT * FROM users WHERE FIND_IN_SET('5', groups);
.
Обновление
в случае char или varchar.Вы можете использовать это
SELECT * FROM users
WHERE
groups LIKE '5,%'
OR groups LIKE '%,5'
OR groups LIKE '%,5,%'
OR groups = '5'
. Другие советы
Это уродливо, но если вы хотите сделать это полностью в MySQL, вы можете сделать:
SELECT *
FROM users
WHERE groups LIKE '%,5,%'
OR groups = '5'
OR groups LIKE '%,5'
OR groups LIKE '5,%'
.
Тебе лучше иметь отдельную таблицу с одной группой на ряд и ссылку назад к пользователю.Вы можете сделать соединение с гораздо более простым условием с этой схемой.
SELECT users.*
FROM users
INNER JOIN users_groups ON (users.user_id = users_groups.group_id)
WHERE users_groups.group_id = 5
.