php - 在逗号分隔的字符串mysql中选择值

标签 php mysql sql

这是我一直在思考几个小时但仍然无法得到答案的问题。

所以,我有这个名为“订单”的 mysql 表

+-----------------------------+
+ 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”。

我需要两个查询:当包含表包含“x”时,以及当包含表不包含“x”时。

有人知道怎么做吗?

最佳答案

使用FIND_IN_SET()

SELECT *  FROM `orders` 
WHERE find_in_set(1, `include`) > 0

但通常情况下,更改表结构并在列中仅存储一个值会更好。这是数据库规范化的第三条规则。

关于php - 在逗号分隔的字符串mysql中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22918977/

相关文章:

PHP电子邮件表单多选

mysql - 如何通过复制磁盘文件*.frm和*.ibd来克隆InnoDB表?

MySQL更新错误

java - 使用 JDBC 从 mysql 中检索数据

php - zend 框架 : zend form decorators - remove multiply <label>

php - 我们可以知道是否正在使用YouTube API进行流式传输吗?

php - mongodb 中的文本搜索 - php

MySQL 查询 : Trim a string in an entry from some start string to some end string?

sql - 如何忽略完全重复的行,但在列中有重复行就可以了?

sql - EXEC sp_who2 - LastBatch?