gpt4 book ai didi

mysql - 在名称字段上进行 GROUP BY,选择 ID 最小的行

转载 作者:行者123 更新时间:2023-11-29 21:41:03 25 4
gpt4 key购买 nike

我正在进行类似的搜索:

select id, company_name from cars where company_name='Audi';

输出为:

+--------+----------------------+
| id | company_name |
+--------+----------------------+
| 349115 | Audi |
| 349117 | Audi |
| 349118 | Audi |
| 349119 | Audi |
| 349120 | Audi |
| 349121 | Audi |
| 349122 | Audi |
| 349123 | Audi |

因为我只想参观每家汽车公司一次,所以我这样做:

select id, company_name from cars where company_name='Audi' group by company_name;

输出:

+--------+----------------------+
| id | company_name |
+--------+----------------------+
| 349115 | Audi |

我只返回了一条记录,并且该记录具有表中的最低 ID。这就是我想要的。我一直在测试这一点,如果有多个记录(找到汽车)进行搜索,group by 始终返回 ID 最低的记录(作为第一个输入数据库的记录) )。

这是一个规则group by还是只是一个巧合? group by 是否始终返回 ID 最低的记录,以便我可以信赖它?

最佳答案

GROUP BY 不保证返回第一行;它从不确定行返回值。您不应该使用这种构造,这种构造只在 MySQL 中允许。

使用joingroup by:

select c.*
from cars c join
(select company_name, min(id) as minid
from cars
group by company_name
) cc
on c.id = cc.minid;

如果您有一家公司并想要一行:

select c.*
from cars c
where company_name = 'Audi'
order by id
limit 1;

关于mysql - 在名称字段上进行 GROUP BY,选择 ID 最小的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34494882/

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