MySQL查询与WHERE NOT EXISTS不返回任何行

时间:2013-12-30 00:15:37

标签: mysql sql

我有2个表,一个叫做课程,另一个叫做course_tutor_link。我正在尝试获得导师未订阅的所有课程的列表。这将是一个简单的左连接,但因为在一开始我将有没有辅导员的课程,这似乎搞乱了代码,到目前为止我有:

SELECT  c.course_id, c.course,
users_id
FROM course AS c
LEFT JOIN course_tutor_link AS ctl
USING (course_id)
GROUP BY course_id

这将为我提供所有课程,包括用户订阅的课程(约11行),一旦我尝试使用users_id进行过滤,我自动也会失去所有没有导师的课程附上例如。

SELECT c.course_id, c.course 
FROM course AS c
JOIN course_tutor_link AS ctl
USING (course_id)
WHERE users_id !=9

它只是我导师订阅的课程。通过SO查看我注意到使用子查询并不存在,但我只是无法获得正确的语法,我得到的是没有返回的行,我的查询是:

SELECT  c.course_id, c.course,
users_id
FROM course AS c
LEFT JOIN course_tutor_link AS ctl
USING (course_id)
WHERE NOT EXISTS (SELECT course_id FROM course_tutor_link WHERE users_id = 9)

我显然做了一些愚蠢的事情,但我不知道是什么

问候

2 个答案:

答案 0 :(得分:1)

SELECT c.course_id, c.course
FROM course AS c
    LEFT JOIN course_tutor_link AS ctl 
        ON c.course_id=ctl.course_id AND ctl.user_id=9
WHERE ctl.course_id IS NULL

答案 1 :(得分:0)

SELECT course_id, course
FROM course
WHERE course_id NOT IN (SELECT course_id FROM course_tutor_link WHERE users_id=9)