以下是查詢沒有學過全部課程的同學的編號的 SQL 語句:
SELECT s.SID
FROM student s
LEFT JOIN score sc ON s.SID = sc.SID
GROUP BY s.SID
HAVING COUNT(DISTINCT sc.CID) < (SELECT COUNT(*) FROM course)
解釋:
使用 LEFT JOIN 將 student 和 score 表關聯起來,以便確定每個學生是否已修過課程。
使用 GROUP BY 按學生分組,以便進行聚合計算。
使用 HAVING 條件篩選出那些沒有修過全部課程的學生,即已修過課程的數量小於全部課程的數量。在此使用了子查詢來獲取全部課程的數量。
選擇需要的結果,即學生的編號。