Php 选择逗号分隔字符串中的值
这是我思考了几个小时仍然无法得到答案的事情 所以,我有一个mysql表叫做“orders”Php 选择逗号分隔字符串中的值,php,mysql,sql,Php,Mysql,Sql,这是我思考了几个小时仍然无法得到答案的事情 所以,我有一个mysql表叫做“orders” +-----------------------------+ + id | include + +-----------------------------+ + 1 | 4,7,9 + + 2 | 1,23,8 + + 3 | 11,6,3 +
+-----------------------------+
+ id | include +
+-----------------------------+
+ 1 | 4,7,9 +
+ 2 | 1,23,8 +
+ 3 | 11,6,3 +
+ 4 | 2,56,32,6 +
+-----------------------------+
当包含列中有一个数字时,我想选择一行
例如,我尝试了以下方法:
SELECT * FROM `orders` WHERE `include` LIKE '%1%'
但问题是它同时选择了第2行和第3行,因为数字“11”包含“1”
我需要两个查询:当include表包含“x”时,以及当include表不包含“x”时
有人知道怎么做吗?使用
但一般来说,最好是更改表结构并在列中只存储一个值。这是数据库规范化的第三条规则。使用
但一般来说,最好是更改表结构并在列中只存储一个值。这是数据库规范化的第三条规则。+1数据库规范化的第三条规则。OP可能需要阅读“一对多”和“多对多”关系。+1 DB规范化的第三条规则。OP可能需要阅读“一对多”和“多对多”关系。您可以将include扩展为“%”,1,%%。您应该有两个表:一个父表和一个带有联接的子表,然后从子表中进行选择。您现在使用的方法是,
include
使用逗号分隔的值,这只会让您感到悲伤和心痛。可能的重复可以将include扩展为“%”,1,%”您应该有两个表:一个父表和一个带有联接的子表,然后从子表中进行选择。你现在的方式,用逗号分隔的值表示include
,只会给你带来悲伤和心痛
SELECT * FROM `orders`
WHERE find_in_set(1, `include`) > 0