一张表三个字段ID科目成绩,查出所有科目成绩都60以上的ID

这个题目比较坑,没有描述清楚

create TABLE #TB (
ID INT,
科目 int,
成绩 int
)

select * from #TB

insert into #TB(ID,科目,成绩)
select 1,66,66
union select 1,55,55
union select 1,55,65
union select 2,66,66
union select 2,55,55
union select 3,66,66


--ID唯一,这个最简单
SELECT ID FROM #TB WHERE 科目>60 and 成绩>60  
--ID不唯一,成绩和科目不唯一
SELECT ID FROM #TB WHERE ID not in (select ID from #TB where 科目<=60 and 成绩<=60 )  group by ID --比较LOW
select ID FROM #TB  group by ID having min(科目)>60 and min(成绩)>60 --最简洁

 

posted @ 2020-11-26 17:38  博客燕  阅读(234)  评论(0编辑  收藏  举报