Mysql SQL查询以获取具有逗号分隔值的行
我有一个SQL表,它有如下行Mysql SQL查询以获取具有逗号分隔值的行,mysql,sql,Mysql,Sql,我有一个SQL表,它有如下行 -------------------- id promocode -------------------- 1 test,test2 2 test,test3 3 test2,test3 现在,我想在“promocode”列中选择值为“test”的行。 当我使用 SELECT id from table WHERE promocode LIKE 'test' 它返回所有行,因为所有行中都包含字符串“test”。但我只需要1行和2行
--------------------
id promocode
--------------------
1 test,test2
2 test,test3
3 test2,test3
现在,我想在“promocode”列中选择值为“test”的行。
当我使用
SELECT id from table WHERE promocode LIKE 'test'
它返回所有行,因为所有行中都包含字符串“test”。但我只需要1行和2行,因为只有这两行具有我需要的确切值。有人能帮我查询吗?您可以使用以下功能:
注意:
将逗号分隔的列表存储在列中几乎是自找麻烦。请考虑规范数据库, ,可以使用以下函数:
注意:
将逗号分隔的列表存储在列中几乎是自找麻烦。请考虑规范你的数据库。非常感谢。使用逗号分隔值时有什么问题?如何在单个字段中存储多个值?如果对您有效,请考虑将此标记为答案。对于下一个问题:您不应该:-)使用另一个至少有两列的表:
id
和promocode
。“id”列引用了另一个表,并且您为每个促销代码插入了一个新行。@raghuveer999您可以查看我帮助解决的多个值的最新问题。@raghuveer999,逗号分隔的值不符合db的用途。每列都有一定的含义,用于存储一个值。在一列中填充3个值,中间加一个逗号,这是一个糟糕的设计。我假设你会说‘每个条目可能有一个以上的促销代码’,所以你要么a)用cols pcode1,pcode2设计一个表。。。pcoden(必须有一些MAX),将pcode1定义为notnull,其余定义为NULL(这意味着它们可能不被使用)。第二个选择是使用您当前的id,promocode,每个id有多个条目:1 | test 1 | test 2 | test 2 | test3…我非常感谢您。使用逗号分隔值时有什么问题?如何在单个字段中存储多个值?如果对您有效,请考虑将此标记为答案。对于下一个问题:您不应该:-)使用另一个至少有两列的表:id
和promocode
。“id”列引用了另一个表,并且您为每个促销代码插入了一个新行。@raghuveer999您可以查看我帮助解决的多个值的最新问题。@raghuveer999,逗号分隔的值不符合db的用途。每列都有一定的含义,用于存储一个值。在一列中填充3个值,中间加一个逗号,这是一个糟糕的设计。我假设你会说‘每个条目可能有一个以上的促销代码’,所以你要么a)用cols pcode1,pcode2设计一个表。。。pcoden(必须有一些MAX),将pcode1定义为notnull,其余定义为NULL(这意味着它们可能不被使用)。第二个选项是使用当前id promocode,每个id有多个条目:1 |测试1 |测试2 |测试2 |测试3。。。
SELECT id from table WHERE FIND_IN_SET('test', promocode) > 0