繁体   English   中英

SQL:为每个值选择一个列的最大值的行

[英]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. Col1 为 NULL

或者

  1. Col1 不是 NULL,Col2 在具有相同 Id 的行中是最大值

那么结果应该是

(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM