mysql - 如何在 MySQL 中获取 parent 浏览次数最多的 child

标签 mysql join parent-child

我有一个包含项目的目录类别。主目录页面必须显示类别列表以及每个类别内的商品数量,并且“预览”图片必须是同一类别中浏览次数最多的商品。

catalogue_cat

  • id_cat
  • 姓名

catalogue_item

  • id_item
  • 姓名
  • 图片网址
  • 观看次数(INT)

    SELECT Catalogue_cat.id_cat, Catalogue_cat.name, COUNT(catalogue_item.id_item) AS q 来自catalog_cat 左连接 Catalogue_item ON Catalogue_item.id_cat = Catalogue_cat.id_cat GROUP BY Catalogue_cat.id_cat ORDER BY Catalogue_cat.name

这只会给我带来带有项目数量的类别列表。我仍然需要每个类别中浏览次数最多的商品的图片。有任何想法吗?谢谢!

最佳答案

您已经在进行group by,因此最好的方法是substring_index()/group by方法:

SELECT c.id_cat, c.name, COUNT(i.id_item) AS q,
       SUBSTRING_INDEX(GROUP_CONCAT(i.url ORDER BY i.views DESC), ',', 1) as MostViewedURL
FROM catalogue_cat c LEFT JOIN
     catalogue_item ci
     ON i.id_cat = c.id_cat
GROUP BY c.id_cat
ORDER BY c.name;

请注意,这假设 URL 中不包含逗号。如果这样做,您将需要找到另一个分隔符。

关于mysql - 如何在 MySQL 中获取 parent 浏览次数最多的 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795178/

相关文章:

mysql - 如何连接 2 个表 ide

javascript - 使用 PHP 和 JavaScript 分隔 SQL 插入的变量

mysql - 想要左连接选择中匹配 id 的值

python - 如何使列表接受/n,以便在写入文件时不让所有内容都在同一行?

MySQL连接,连接表中的空行

c - 需要在 SIGCHLD 处理程序期间访问子进程的变量

sql - LAG 所有先前行 - 父子数据库查找每个父项的所有子项总数

css - 如何根据其父元素制作 CSS 样式

MySQL 显示分组结果

mysql - Aurora - MySQL 5.7 - Adaptive_hash_index 配置 - 读取与写入副本