[英]SQL: Select Rows with Max Value of One Colume For Each Value
我有一张这样的表:
Id Col1 Col2 ...
1 NULL 1000
1 x 1001
1 y 1002
2 x 2000
2 y 2001
2 NULL 2002
3 z 3000
....
我想选择 Id = 1 或 2 的所有行,其中:
或者
那么结果应该是
(1, NULL 1000)
(1, y 1002)
(2, y 2001)
(2, NULL 2002)
对于第一个条件,我可以想到以下 SQL 语句:
SELECT * FROM my_table WHERE Id IN (1, 2) and action IS NULL
对于第二个条件,如果我使用这样的东西:
SELECT * FROM my_table WHERE Id IN (1, 2) and action IS NOY NULL ORDER BY Col2 LIMIT1
在 Id=1 和 Id=2 的所有结果中,它只会给我一行最大 Col2。
如何为每个 Id 组使用 Max Col2 获取每一行? 有使用 GROUP BY 的感觉,但不知道如何应用它。 请给我一个提示! 谢谢!
(这基本上是我之前发布的这个问题的批处理版本)
嗯。 . . where
子句中的两个条件如何:
select t.*
from my_table t
where t.col1 is null or
t.col2 = (select max(t2.col2) from my_table t2 where t2.id = t.id and t2.col1 is not null);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.