gpt4 book ai didi

MySQL 排序分组依据结果

转载 作者:行者123 更新时间:2023-12-01 00:42:16 24 4
gpt4 key购买 nike

我有以下表格结构:

table_1

id     title
------------
155 item1
156 item2
157 item3

table_2

id     model
------------
155 100
156 100
157 200

table_3

id     cid
------------
155 5
156 5
157 5

我想按模型(来自表_2)对我的结果进行分组确保它返回最高的 id(按 id 降序排列) .

我尝试了以下方法,但order by 子句似乎不起作用:

SELECT a.id, b.model FROM table_1 as a
INNER JOIN table_2 as b on b.id = a.id
INNER JOIN table_3 as c on c.id = a.id
WHERE c.cid = 5
GROUP BY b.model
ORDER BY a.id desc

我做错了什么?

最佳答案

SELECT max(a.id), b.model FROM table_1 as a
INNER JOIN table_2 as b on b.id = a.id
INNER JOIN table_3 as c on c.id = a.id
WHERE c.cid = 5
GROUP BY b.model
ORDER BY max(a.id) desc

此处演示:http://sqlfiddle.com/#!9/afb0b/2

这有效而您的初始尝试没有的原因是 GROUP BY 子句中不存在的任何字段,或未在聚合函数中使用的字段(例如 MAX),将具有不确定的值(即,mysql 引擎不保证您将从组中获得哪个值)。

MySQL GROUP BY Handling

The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate.

事实上,MySQL 是为数不多的(唯一的?)sql 数据库之一,它可以让您在 select 子句中放置一个非聚合、非分组的字段而不会出错。

关于MySQL 排序分组依据结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29517328/

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