作者eliang ()
看板Database
标题[SQL ] 列出没有与其他栏位关联的记录
时间Tue Oct 21 20:48:55 2008
我想请问一个 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
我想说, 只要将上述查询再加上 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
但是此查询会造成错误:
Unknown column 'numActors' in 'where clause'
请问问题出在哪里, 烦请各位指教, 谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.133.199
※ 编辑: eliang 来自: 220.132.133.199 (10/21 20:49)