如何根据类别ID数组选择mysql中的记录?

时间:2014-05-14 08:16:27

标签: php mysql

我有一个表,其中表的类别字段是数组值 喜欢:

|-----------------------------------|
|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个。我不知道如何查询它。我挣扎了很多。请帮帮我。提前谢谢。

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了解最合适的方法。