SQL中特定实例的列比较
我有一个样本数据,我想验证一个特定实例的Age\u Low是否小于Age\u HighSQL中特定实例的列比较,sql,sql-server,Sql,Sql Server,我有一个样本数据,我想验证一个特定实例的Age\u Low是否小于Age\u 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的每个实例的Ag
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,如果不是,那么它应该返回结果
我尝试了以下查询,但它返回了所有ABC行,因为在某些行中,Age\u Low高于Age\u High
SELECT *
FROM tablename
WHERE Age_Low > Age_High
你似乎想要:
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);
你似乎想要:
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);
试试这个:
select * from t where Age_Low >
(
select min(Age_High) from t where NAME='ABC'
)
试试这个:
select * from t where Age_Low >
(
select min(Age_High) from t where NAME='ABC'
)
如果我正确理解您的问题,您希望为该ID值选择Age_Low大于Age_High最小值的行。如果是,此查询将执行您想要的操作:
SELECT *
FROM tablename t
WHERE Age_Low > (SELECT MIN(Age_High)
FROM tablename t1
WHERE t1.ID = t.ID)
输出:
ID NAME Age_Low Age_High
1 ABC 75 90
2 XYZ 50 20
如果我正确理解您的问题,您希望为该ID值选择Age_Low大于Age_High最小值的行。如果是,此查询将执行您想要的操作:
SELECT *
FROM tablename t
WHERE Age_Low > (SELECT MIN(Age_High)
FROM tablename t1
WHERE t1.ID = t.ID)
输出:
ID NAME Age_Low Age_High
1 ABC 75 90
2 XYZ 50 20
您只想将名称或整行作为结果吗?@jarlh整行作为结果在您的样本数据中,没有一行的年龄低>年龄高,这会导致样本数据不好。我认为不存在。@Jeroenmoster,Nick我修改了我的样本数据。。谢谢您的建议。您想要的是名称还是整行作为结果?@jarlh整行作为结果在您的样本数据中,没有一行的年龄低>年龄高,这会导致样本数据不好。我同意不存在。@Jeroenmoster,Nick我修改了我的样本数据。。谢谢你的建议。谢谢你的帮助@Nick!谢谢你的帮助@Nick!虽然此代码可以回答问题,但最好解释如何解决问题,并提供代码作为示例或参考。只有代码的答案可能会令人困惑,并且缺乏上下文。虽然此代码可能会回答问题,但最好解释如何解决问题,并提供代码作为示例或参考。只有代码的答案可能会令人困惑,并且缺乏上下文。