表类别:
id, name,
-------------
1 category1
2 category2
3 category3
4 category4
表格帖子:
id, category, title
--------------------
1 1, 3 title1
2 4, 2 title2
3 1, 4 title3
我想在这个类别中有一个节目类别和计数器帖子。在表格的类别列中,我列出了类别的ID,用“,”分隔。如果类别=类别ID并使用最少的SQL查询显示计数器,则搜索如何执行此操作。
答案 0 :(得分:4)
您应修复数据结构,使每个帖子和类别都有一行。以逗号分隔的列表不存储数据的SQLish方式有很多原因。您应该将其更改为联结表。
以下是一些原因:
您应该有一个名为PostCategories
的表格来获取此信息。
有时候,我们会遇到其他人不好的设计决定。如果是这样,您可以使用如下查询:
select c.id, count(*)
from posts p join
categories c
on find_in_set(c.id, replace(p.category)) > 0
group by c.id;