gpt4 book ai didi

sql - GROUP BY 查询未按预期排序

转载 作者:可可西里 更新时间:2023-11-01 07:36:08 24 4
gpt4 key购买 nike

我不知道为什么我不能让这个查询按我想要的方式工作,希望你能赐教。

   SELECT e.id,
e.num,
e.name,
s.name as s_name,
t.num as t_num,
e.show_id
FROM s_episodes e
LEFT JOIN shows s ON s.id = e.show_id
LEFT JOIN s_seasons t ON t.id = e.season_id
GROUP BY e.show_id
ORDER BY e.dateadded DESC

dateadded 是一个整数(unix 时间戳)。 e.num, t.num也是int。

本应显示最新添加的剧集,但是当GROUP BY对行进行分组时,列出的剧集不是最新的,而是最新一季(season)的第一集(e.num表示的剧集编号)节目的编号(由 t_num 表示)(但是,节目是根据最新剧集按添加日期排序的,但列出的剧集是本季的第一集,而不是最后添加的一集)。

有什么想法吗?

我希望我说清楚了,对于任何英语错误,我们深表歉意。谢谢。

最佳答案

当您按一个字段分组并且结果字段不是它的一部分(或者在您的情况下是按字段排序)时,结果是不可预测的。

您需要将其添加到分组依据或者在您的情况下,使用聚合函数:

ORDER BY MAX(e.dateadded) DESC

编辑:您真的需要 LEFT JOIN 还是那些也可以是常规的内部联接?

由于您还需要显示最新一集中的字段,您可以尝试:

   SELECT e.id,
e.num,
e.name,
s.name as s_name,
t.num as t_num,
e.show_id
FROM shows s
JOIN s_episodes e ON e.id =
(SELECT id
FROM s_episodes
WHERE show_id = s.id
ORDER BY dateadded DESC LIMIT 1)
LEFT JOIN s_seasons t ON t.id = e.season_id
ORDER BY e.dateadded DESC

关于sql - GROUP BY 查询未按预期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3720205/

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