我有一个样本数据,我想验证Age_Low
小于Age_High
仅用于特定实例。
ID NAME Age_Low Age_High
1 ABC 50 100
1 ABC 25 60
1 ABC 75 90
2 XYZ 20 40
2 XYZ 50 20
例如,对于上述数据,ABC的每个实例的Age_Low
都应小于Age_High
,如果不是,则结果应返回。
我尝试了以下查询,但是由于某些行中Age_Low
比Age_High
高,所以它返回了所有ABC行。
SELECT *
FROM tablename
WHERE Age_Low > Age_High
答案 0 :(得分:1)
您似乎想要:
select t.*
from table t
where not exists (select 1 from table t1 where t1.id = t.id and t1.name = t.name and t1.Age_Low < t.Age_High);
答案 1 :(得分:1)
如果我正确理解了您的问题,那么您想要选择Age_Low
大于Age_High
的最小值的行。如果是这样,此查询将执行您想要的操作:
ID
输出:
SELECT *
FROM tablename t
WHERE Age_Low > (SELECT MIN(Age_High)
FROM tablename t1
WHERE t1.ID = t.ID)
答案 2 :(得分:0)
尝试一下:
select * from t where Age_Low >
(
select min(Age_High) from t where NAME='ABC'
)