1

这是我编的一个虚拟测试(哎呀,我忘记了 id)。我想编写一个查询,它将返回每个组 id 中最高的 grp #。在这种情况下是最后两行,除非我删除最后一行。然后它将是最后一行和第二行。无论如何,我不知道如何编写不使用子查询的查询,并且有一段时间我忘记了如何编写子查询(这是一件好事,对吧?)

CREATE TABLE example ( gid INT, grp INT, data VARCHAR(100) );
--
mysql> select * from example;
+------+------+------+
| gid  | grp  | data |
+------+------+------+
|    1 |    1 | a    |
|    1 |    2 | a    |
|    2 |    1 | a    |
|    2 |    2 | a    |
|    1 |    5 | a    |
+------+------+------+
4

3 回答 3

2
SELECT gid, MAX(grp) FROM example GROUP BY gid
于 2012-09-04T08:19:20.080 回答
2
select gid,max(grp)as 'higest_grp' from example group by gid
于 2012-09-04T08:21:14.370 回答
0

I believe this is the correct way to retrieve the correct data for each row.

SELECT `gid`, `grp`, `data` FROM `example` 
WHERE `grp` IN (SELECT MAX(t2.`grp`) FROM `example` t2 GROUP BY `gid`) 
GROUP BY `gid`
于 2012-09-04T08:55:09.733 回答