mysql查询使用AND子句在逗号分隔列表中搜索多个值

时间:2013-04-01 01:22:16

标签: mysql sql select

我有下表

Id     | Userdefined01
------------------------
1      | 1,2,4,5
2      | 2,5
3      | 4,6,8
4      | 1,5

我想编写一个查询来查找userdefined01字段中值为2和5的所有ID。这可能吗?

1 个答案:

答案 0 :(得分:9)

使用FIND_IN_SET() - mysql的内置函数来搜索CSV内的字符串。

SELECT  *
FROM    tableName
WHERE   FIND_IN_SET('2', Userdefined01) > 0 AND
        FIND_IN_SET('5', Userdefined01) > 0 

如果您有时间更改架构,则需要对其进行非规范化。查看示例,它可能是Many-to-Many关系,因此您可以将其分解为3表设计。