MySQL Выберите данные из многованочного атрибута

StackOverflow https://stackoverflow.com//questions/9651486

  •  11-12-2019
  •  | 
  •  

Вопрос

Как я могу запустить Select Query на многоватальном атрибуте?У MySQL есть функция, выберите определенные данные из многовестности?Большая помощь ценится.Вот образец проблемы:

таблица

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

dataType - char(250) для groups

Я хочу сделать запрос, чтобы выбрать все userids, которые принадлежат к группе 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
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top