MySQL выбрать данные из многозначного атрибута - PullRequest
1 голос
/ 11 марта 2012

Как выполнить запрос на выборку для многозначного атрибута? Есть ли в mysql функция выбора определенных данных из многозначного поля? Большая помощь приветствуется. Вот пример проблемы:

Таблица

userid      groups
-------------------
  2          2,3,5
  4          1
  9          2,5,10

тип данных char(250) для groups

Я хочу сделать запрос, чтобы выбрать все userid s, которые принадлежат группе 5, в этом примере это будут идентификаторы пользователей 2 и 9. Итак:

userid
------
  2
  9

Есть ли способ выполнить запрос mysql? или с php / mysql?

Ответы [ 2 ]

3 голосов
/ 11 марта 2012

В случае, если тип данных groups установлен

Вы можете использовать

SELECT * FROM users WHERE FIND_IN_SET('5', groups);

UPDATE

В случае с чаром или варчаром Вы можете использовать это

SELECT * FROM users
WHERE 
     groups LIKE '5,%'
     OR groups LIKE '%,5'
     OR groups LIKE '%,5,%'
     OR groups = '5'
0 голосов
/ 11 марта 2012

Это некрасиво, но если вы хотите сделать это полностью в MySQL, вы можете сделать:пользователю.С этой схемой можно выполнить соединение с гораздо более простым условием.

SELECT users.*
FROM users
INNER JOIN users_groups ON (users.user_id = users_groups.group_id)
WHERE users_groups.group_id = 5
...