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