我有一个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
答案 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;