mysql从多值属性中选择数据

时间:2012-03-11 00:47:01

标签: php mysql sql multivalue

如何在多值属性上运行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?

2 个答案:

答案 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