mom*_*omo 2 mysql sql postgresql
如果我有一个包含数据的表格数字:
+------+------+------+------+
| colA | colB | colC | colD |
+------+------+------+------+
| 1 | 2 | 3 | 4 |
| 1 | 2 | 9 | 5 |
+------+------+------+------+
Run Code Online (Sandbox Code Playgroud)
并做:
select colA, colB, colC, MAX(colD) FROM Numbers GROUP BY colA, colB;
Run Code Online (Sandbox Code Playgroud)
我相信它应该返回第2行.它分组colA, colB并选择最大的一个colD.
不幸的是,这不起作用,因为你还必须按照colC进行分组才能返回它.
为什么?有没有其他方法可以做我想做的事情?
我想在同一行colA和colB,但最大的中的一个colD.
有几种方法可以解决这个问题.也许最简单的是JOIN针对执行该colA, colB组的子查询,并从中找到完整的相应行.
SELECT
tbl.colA,
tbl.colB,
tbl.colC,
tbl.colD
FROM tbl JOIN (
SELECT
colA,
colB,
MAX(colD) AS maxD
FROM tbl
GROUP BY colA, colB
) g ON tbl.colA = g.colA AND tbl.colB = g.colB AND tbl.colD = g.maxD
Run Code Online (Sandbox Code Playgroud)