繁体   English   中英

SQL查询以选择仅匹配特定条件的所有行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM