从表中选择ID(> 5000)中的(no,id)

时间:2019-11-01 13:05:31

标签: sql oracle

我有一个ID为No的表:

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选择一个没有限制的数字(选择id,max(现在是...),结果如下:

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

现在我可以进行此查询,并且可以正常工作:

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

它给了我3行。

但是,如果我想查询选择中具有id且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 Kresten

2 个答案:

答案 0 :(得分:0)

不是那样。

我会尽力回答这个问题,但是如果您显示完整的查询,会容易得多。

SELECT *
FROM table t
WHERE exists
    (select 1 from other_table o
     where t.no = o.no
       and t.id > o.id) 
;

如果这不能给您所需的结果,则需要向我们显示更多数据和预期结果。

答案 1 :(得分:0)

一种方法是join

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