【发布时间】:2020-11-01 19:43:27
【问题描述】:
我必须进行考试,即使使用 dbms(更准确地说是 MySQL)查询也有效。我问自己在形式上是否正确以及在以下问题中哪种形式在形式上更正确,假设表格如下:
create table T(
k integer primary key not null autoincrement,
camp1 integer not null,
camp2 integer not null);
找到 camp2 的每个值的行,其中 camp3 是子集的最大值: 哪个解决方案是正确的,如果它们都正确,那么哪个是形式上最好的?
select * from T group by camp2 having camp3 = max(camp3);
或
select * from T b group by camp2 having camp3 = (select max(camp3) from T where T.camp2 = b.camp2);
【问题讨论】:
-
您是否尝试过任何查询?你认为哪一个是正确的?
-
这个问题在 Stack Overflow 上已经回答过很多次了。我添加了greatest-n-per-group 标签,所以您可以点击它并查看很多答案。
-
您的表中没有
camp3。也是auto_increment不是autoincrement。
标签: mysql sql database greatest-n-per-group