gpt4 book ai didi

mysql - GROUP BY 和 ORDER BY 问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:04:23 24 4
gpt4 key购买 nike

我有以下查询:

SELECT DISTINCT (
s.styleTitle
), COUNT(p.id) AS `PictureCount`
FROM `style` s
LEFT JOIN `instagram_picture_style` ps ON s.id = ps.style_id
LEFT JOIN `instagram_shop_picture` p ON ps.picture_id = p.id
LEFT JOIN `instagram_picture_category` c ON c.picture_id = p.id
LEFT JOIN `instagram_second_level_category` sl ON c.second_level_category_id = sl.id
WHERE sl.id =25
GROUP BY p.id
ORDER BY PictureCount

但是这个查询给了我:

enter image description here

我基本上希望列表按其中包含最多图片的样式排序。我做错了什么?为什么它在所有样式上都给我 1,我很确定它有更多该样式的图片

最佳答案

ORDER BY 没有下划线。但同样重要的是,您正在以一种您似乎认为它是函数的方式使用 DISTINCT。它不是。它是对 SELECT 的修改,适用于所有列。

您应该group by distinct 中的同一列。像这样:

SELECT s.styleTitle, COUNT(p.id) AS `PictureCount`
FROM `style` s
LEFT JOIN `instagram_picture_style` ps ON s.id = ps.style_id
LEFT JOIN `instagram_shop_picture` p ON ps.picture_id = p.id
LEFT JOIN `instagram_picture_category` c ON c.picture_id = p.id
LEFT JOIN `instagram_second_level_category` sl ON c.second_level_category_id = sl.id
WHERE sl.id = 25
GROUP BY s.styleTitle
ORDER BY PictureCount DESC;

事实上,您几乎从不需要 distinctgroup by。如果您正在使用,则需要考虑为什么需要它。

关于mysql - GROUP BY 和 ORDER BY 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27327659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com