NOT EXISTS是不是说不包含?
SELECT * FROM test_2001
WHERE NOT EXISTS
(SELECT * FROM test_2001 WHERE age_group!=(select MAX(age_group) from test_2001))
我选择就是写的是不包含最大年龄的55岁以上的,但是我不太明白这个的用法
需求是:查询去掉最大年龄,最小年龄后人员的平均年龄,要用到NOT EXISTS
去掉最大年龄、最小年龄,不该用字段age_group去查
直接简单一条sql可以查出
select avg(age) from test_2001 a
where not exists(select 1 from test_2001 having max(age)=a.age and min(age)=a.age)
SELECT * FROM test_2001 a
(SELECT * FROM test_2001 WHERE age_group!=(select MAX(age_group) from test_2001) and a.id=id)
或者
WHERE NOT IN
exists要看sql返回的结果集是否与前面匹配,所以exsts括号的查询要跟前面有关联
你的sql中,exists括号里的查询跟前表没有任何关联,所以出不来结果
直接判断试试
select avg(age_group) from test_2001
where age_group<>(select max(age_group) from test_2001) and age<>(select min(age_group) from test_2001)
https://www.cnblogs.com/flzs/p/11542181.html
select avg(age_group)
from test_2001 t
where not exists
(select 1
from
(select
max(age_group) as max_aget,
min(age_group) as min_age
from test_2001
) t1
where t.age_group=t1.max_aget or t.age_group=t1.age_group
)