MySQL find_in_set查找该类别的广告编号?

时间:2018-04-08 14:51:45

标签: mysql

如何在Mysql中使用左连接链接表格时获取广告数量?

SQL-FIDDLE-TABLE

如果我使用count(*)和group by,我会得到像

这样的结果

SQL-FIDDLE-TABLE

count
2
2
2

我的目标是使用Find_in_set

获取广告数量

SQL-FIDDLE-TABLE

结果:

count
2

结果数:2,但该类别中有1个分类。如何获取某个类别的广告数量?

1 个答案:

答案 0 :(得分:1)

FIND_IN_SET()不返回列表中的元素数,只返回特定值的位置(如果找到)。

您可以用来计算列表长度的一个表达式是:

LENGTH(ads.categories)-LENGTH(REPLACE(ads.categories, ',', ''))+1

字符串长度与删除逗号的字符串的差异加上on是元素的数量。

但是当你真正想要单独处理元素时,你会发现将数据存储为逗号分隔列表是cause more problems

如果您通过创建第三个表来存储每对ads.idads_category.id来表示广告和类别之间的这种多对多关系,那就容易多了。