我有一个表,其中表的类别字段是数组值 喜欢:
|-----------------------------------|
|post_id | name | category_id |
-------------------------------------
|1 | test1 | 1,2,45 |
|2 | test2 | 2,7 |
|3 | test3 | 7,13,56 |
|-----------------------------------|
如果我选择CATEGORY ID 2,则从下拉选择框中选择。我应该得到TWO ROWS的结果。因为post_id 1和2在category_id中有2个。我不知道如何查询它。我挣扎了很多。请帮帮我。提前谢谢。
答案 0 :(得分:6)
如果帖子可以分为多个类别,那么您应该重新考虑在category_id字段中使用数组,而是使用帖子/类别引用表,其结构如下:
id postId catId
通过这种方式,您可以获得类别2中的所有帖子(让我们将此参考表称为“PostCats”):
SELECT postId FROM PostCats WHERE catId=2
答案 1 :(得分:3)
有一种简单的方法可以解决这个问题。
您可以将category_id
的数据类型更改为SET
,并使用以下内容:
SELECT * FROM table WHERE FIND_IN_SET('2', category_id);
了解详情: FIND_IN_SET
另请参阅flauntster' answer了解最合适的方法。