我有一张这样的表:
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的所有行,其中:
OR
然后结果应该是
(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的感觉,但不知道如何应用它。请给我一个提示!谢谢!
(这基本上是我之前发布的question的批量版本)
答案 0 :(得分:0)
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);