如何在多值属性上运行select查询? mysql有功能吗从多值字段中选择某些数据?非常感谢。以下是问题的一个示例:
表
userid groups
-------------------
2 2,3,5
4 1
9 2,5,10
char(250)
groups
我想进行查询以选择属于第5组的所有userid
,在此示例中,它将是用户ID 2和9.所以:
userid
------
2
9
使用mysql查询的任何方式吗?还是用php / mysql?
答案 0 :(得分: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'
答案 1 :(得分: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