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

标签 mysql

Mysql中左连接表时如何获取广告数?

SQL-FIDDLE-TABLE

如果我使用计数 (*) 和分组依据,我会得到如下结果

SQL-FIDDLE-TABLE

count
2
2
2

我的目标是通过 Find_in_set 获取广告数量

SQL-FIDDLE-TABLE

结果:

count
2

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

最佳答案

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

可用于计算列表长度的一个表达式是:

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

字符串和去掉逗号的字符串的长度之差,再加上,就是元素个数。

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

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

关于MySQL find_in_set 查找该类别的广告号数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49719163/

相关文章:

mysql - 使用什么数据库结构来存储 GEDCOM 信息?

mysql - 复杂字典的数据库设计

php - 连接 Android 应用程序以将字符串从 mysql 获取到 ListView 时出错

mysql - 项目与数据库一起备份到可移动驱动器

mysql - 我正在使用 Ruby on Rails,我想删除一个数据库条目。我可以将条目设为 "cut"并将所有较大的 ID 减一吗?

php - 当 MySQL 数据库的表有新条目时向 Android 应用程序发出通知

php - 来自 php 的 Google Table Chart 创建了 Json

php - 如何用英语单词拼出数字

Mysql查询GROUP BY where条件LIMIT 1

java - 我如何为给定的 SQL 查询编写 JPA 查询