1

如何对多值属性运行选择查询?mysql是否具有从多值字段中选择某些数据的功能?非常感谢您的帮助。这是问题的一个示例:

桌子

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

数据类型char(250)用于groups

我想做一个查询来选择userid属于第 5 组的所有 s,在本例中它将是用户 ID 2 和 9。所以:

userid
------
  2
  9

用mysql查询有什么办法吗?还是使用 php/mysql?

4

2 回答 2

3

如果groups数据类型是 SET

您可以使用

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'
于 2012-03-11T00:52:22.917 回答
0

这很难看,但如果你想完全在 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
于 2012-03-11T01:00:50.413 回答