如何在Mysql中使用左连接链接表格时获取广告数量?
如果我使用count(*)和group by,我会得到像
这样的结果count
2
2
2
我的目标是使用Find_in_set
获取广告数量结果:
count
2
结果数:2,但该类别中有1个分类。如何获取某个类别的广告数量?
答案 0 :(得分:1)
FIND_IN_SET()不返回列表中的元素数,只返回特定值的位置(如果找到)。
您可以用来计算列表长度的一个表达式是:
LENGTH(ads.categories)-LENGTH(REPLACE(ads.categories, ',', ''))+1
字符串长度与删除逗号的字符串的差异加上on是元素的数量。
但是当你真正想要单独处理元素时,你会发现将数据存储为逗号分隔列表是cause more problems。
如果您通过创建第三个表来存储每对ads.id
和ads_category.id
来表示广告和类别之间的这种多对多关系,那就容易多了。