作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 列出没有与其他栏位关联的记录
时间Tue Oct 21 21:42:57 2008
※ 引述《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
1F:推 eliang:<(_ _)> 太感谢了 10/22 01:21