Re: [SQL ] 列出沒有與其他欄位關聯的記錄
※ 引述《eliang ()》之銘言:
: 我想請問一個 SQL 該如何下,
: 假設我有兩個表格, 第一個表格記錄學生資料:
: TABLE students
: +-----+------+--------
: | sid | name | ...... (sid 為學生 id)
: +-----+------+--------
: | 1 | Tom |
: | 2 | Jack |
: | 3 | Mary | ......
: | 4 | John |
: | 5 | Joe |
: +-----+------+--------
: 第二個表格記錄學生選了什麼課:
: TABLE stud_courses
: +-----+-----+
: | sid | cid | (sid 為學生 id, cid 為課程 id)
: +-----+-----+
: | 1 | 1 |
: | 1 | 4 |
: | 2 | 4 |
: | 2 | 3 |
: | 2 | 6 |
: | 4 | 1 |
: +-----+-----+
: 請問我 SQL 要怎麼下, 才能選出「所有沒有選到課的學生」?
: (即 id 是 3 和 5 的學生, Mary 和 Joe)
: 我的想法是這樣的:
: 我用以下查詢可以查出每個學生選的課程數量,
SELECT students.sid, COUNT(stud_courses.cid) AS numCourses
FROM students LEFT JOIN stud_courses ON students.sid=stud.courses.sid
GROUP BY students.sid
簡單解↓
SELECT students.sid
FROM students
LEFT JOIN stud_courses ON students.sid=stud.courses.sid
WHERE stud.courses.sid IS NULL-- ^是不是有打錯,我只是剪剪貼貼而已XD
: 我想說, 只要將上述查詢再加上 numCourses=0 限制條件,
: 就可以得到我要的答案, 即:
SELECT students.sid, COUNT(stud_courses.cid) AS numCourses
FROM students LEFT JOIN stud_courses ON students.sid=stud.courses.sid
WHERE numCourses=0
GROUP BY students.sid
太難我也不會↓
SELECT students.sid, COUNT(stud_courses.cid) AS numCourses
FROM students LEFT JOIN stud_courses ON students.sid=stud.courses.sid
GROUP BY students.sid
HAVING COUNT(stud_courses.cid)=0
: 但是此查詢會造成錯誤: Unknown column 'numActors' in 'where clause'
: 請問問題出在哪裡, 煩請各位指教, 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.206.51
推
10/22 01:21, , 1F
10/22 01:21, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):