[英]SQL query to SELECT all rows that match only a specific condition
我正在上斯坦福大学的在线数据库课程,并且一直在练习。 这是数据库 。 问题是:
查找只有相同等级的朋友的学生的姓名和等级。
这是我的尝试:
/* Select all highschoolers and their grades... */
SELECT h1.name, h1.grade
FROM Highschooler h1
/* ...where their grades are equal to all their friends' grades */
WHERE h1.grade = ALL(
/* Select friends' grades */
SELECT h2.grade
FROM Highschooler h2
JOIN Friend f
ON f.ID1 = h1.ID
AND f.ID2 = h2.ID
);
我得到这个错误:
查询执行失败:“ ALL”附近:语法错误
我已经使用在线语法检查器检查了我的SQL,它通过了。 我想念什么?
为什么不保持它的简单性和标准性,跨任何sql风格运行? 您只能通过联接逃脱。
select name, grade
from Highschooler h1
inner join friends f
on f.id1=h1.id
inner join Highschooler h2
on h2.id=f.id2
group by 1,2
having
sum(case when h1.grade=h2.grade then 1 else 0 end) = count(*) -- nr of friends with same grade equals total nr of friends.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.