簡體   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