Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询以获取具有逗号分隔值的行_Mysql_Sql - Fatal编程技术网

Mysql 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行

我有一个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
。“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