SQL中特定实例的列比较

时间:2018-09-06 12:47:07

标签: sql sql-server

我有一个样本数据,我想验证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_LowAge_High高,所以它返回了所有ABC行。

  SELECT *
  FROM tablename
  WHERE Age_Low > Age_High

3 个答案:

答案 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'
)