Php 从逗号分隔的ID在MySQL中编写where子句查询
我的帖子表中有很多博客帖子。假设Php 从逗号分隔的ID在MySQL中编写where子句查询,php,mysql,where-clause,Php,Mysql,Where Clause,我的帖子表中有很多博客帖子。假设 +----+----------------------+-------------------------+ | id | title | categories | +----+----------------------+-------------------------+ | 1 | title 1 | 234, 235, 243 | | 2 |
+----+----------------------+-------------------------+
| id | title | categories |
+----+----------------------+-------------------------+
| 1 | title 1 | 234, 235, 243 |
| 2 | title 2 | 237 |
| 2 | title 3 | 234, 243 |
+----+----------------------+-------------------------+
现在,我正在尝试选择所有类别为243的帖子。我已经尝试过使用FIND_IN_SET
功能,如果id是categories字段中的第一个数字,该功能可以选择帖子
我当前的查询是这样的-
从PostId DESC中查找集合(235,类别)0顺序的帖子中选择*
提前感谢。您应该知道在这样的列表中存储类别是多么糟糕的想法。以下是一些原因:
- 将数字存储为字符串是不好的
- SQL的字符串操作功能相对较差
- 结果查询不能使用索引
- 无法声明外键约束
WHERE FIND_IN_SET(235, replace(Category, ' ', '') > 0
或者,或者:
WHERE CONCAT(', ', 235, ', ') LIKE CONCAT('%, ', Category, ', %')
但是,我鼓励您正确使用关系数据结构并实现连接表。在集合(243,类别)中查找应该在哪里工作。您确定键入了正确的列名吗<代码>在集合中查找(235,类别)great.works fine.:)我正在努力,但你们已经在我面前给出了答案,而且比我的答案更好。真棒的解决方案。谢谢。