【问题标题】:SQL Select Query With FIND_IN_SET Or Any things else to find comma separated values in a column with comma separeted valuesSQL Select Query with FIND_IN_SET 或任何其他东西来在逗号分隔值的列中查找逗号分隔值
【发布时间】:2014-05-13 10:35:27
【问题描述】:

我有一列有逗号分隔值:

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 的用户表单

如何优化我的选择查询?

【问题讨论】:

  • 您无法优化使用字符串操作来搜索列表的查询。您需要使用联结/关联表正确构建数据。

标签: sql select find-in-set


【解决方案1】:

这样使用

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

【讨论】:

    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多