SQL选择查询使用FIND_IN_SET或其他任何东西以逗号分隔值在列中查找逗号分隔值

时间:2014-05-13 10:35:27

标签: sql select find-in-set

我有一列有逗号分隔值:

id Column_name
== ==========
1  value1,value2,value3,value5
2  value2,value3,value4
3  value1,value3,value5
4  value1,value2,value4,value5

现在,我想要一个查询来获取value2value4

的所有记录

如果可能,我需要如下查询:

SELECT * FROM table_name WHERE FIND_IN_SET('value2,value4',`column_name`) 

因此,它将返回ID为1,2,4的重新编码(包含value2value4

我有用于从check_box

发送value1,value2 ..etc的用户表单

如何优化我的选择查询?

1 个答案:

答案 0 :(得分:3)

像这样使用

SELECT * FROM table_name 
WHERE FIND_IN_SET('value2',column_name) > 0
or FIND_IN_SET('value4',column_name) > 0

但永远不要永远不要在一列中存储多个值!

您实际上应该将数据库结构更改为类似

的结构
your_table
----------
id
name
other_columns


values table
------------
your_table_id
value