首页 > 解决方案 > 从表中选择 ID,其中 (no, id) in (ID, >5000)

问题描述

我有一张有 id 的桌子,没有:

id   | no

A999 | 6000
A999 | 5000
A999 | 3000
A999 | 1000

B999 | 5000
B999 | 4000
B999 | 7000
B999 | 9000

C999 | 9000
C999 | 5000
C999 | 2000
C999 | 1000

从中我为每个 id 选择一个限制 no(选择 id,max(现在在哪里 ...),结果如下:

id   | no
A999 | 5000
B999 | 7000
C999 | 2000

现在我可以进行这个查询了,它工作正常:

SELECT *
FROM table
WHERE (no, id) 
IN (The select above)

它给了我 3 行。

但是,如果我想从 select 中查询带有 id 的行,而从 select 中查询 no> no 像:

SELECT *
FROM table
WHERE (no, >id) 
IN (The select above)

有了这个结果:

id   | no

A999 | 6000
A999 | 5000

B999 | 7000
B999 | 9000

C999 | 2000
C999 | 1000

可以这样做吗?

BR克雷斯顿

标签: sqloracle

解决方案


一种方法是join

select t.*
from t join
     (select id, max(no) where ...) tt
     on t.id = tt.id and t.no > tt.no;

推荐阅读