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

WHERE NOT EXISTS的MySQL查询不返回任何行,mysql,sql,Mysql,Sql,我有两个表格,一个叫做课程,另一个叫做课程导师链接。我正试图得到一份导师没有订阅的所有课程的清单。这将是一个简单的左键连接,但因为一开始我的课程没有导师,这似乎会弄乱代码,到目前为止我有: 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行

我有两个表格,一个叫做课程,另一个叫做课程导师链接。我正试图得到一份导师没有订阅的所有课程的清单。这将是一个简单的左键连接,但因为一开始我的课程没有导师,这似乎会弄乱代码,到目前为止我有:

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行),一旦我尝试使用用户id进行筛选,我也会自动丢失所有没有附加导师的课程,例如

SELECT c.course_id, c.course 
FROM course AS c
JOIN course_tutor_link AS ctl
USING (course_id)
WHERE users_id !=9
它只涉及到我的导师订阅的课程。通过查看,我注意到使用了子查询,但我无法获得正确的语法,我得到的只是没有返回行,我得到的查询是:

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)
我显然在做一些愚蠢的事情,但我不知道是什么

问候


您的第二个代码示例似乎与第一个完全相同。很抱歉,您的代码盲了,updatedDoh!谈论大脑放屁。多亏了toph,它工作得非常好,而且据我所知,它比我要求的子查询方法(你在下面给出的)更有效,我完全忘记了明显的IS NULL,并且尝试了course_IS=NULL,但它不起作用。我的两个答案都是正确的。更好的答案取决于您的数据。您应该在填写的表格中尝试这两种方法,并选择更快的方法。我相信,如果将来您在同一答案(编辑)中添加第二个(第三个等)解决方案,而不是创建新的解决方案,效果会更好。
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
SELECT course_id, course
FROM course
WHERE course_id NOT IN (SELECT course_id FROM course_tutor_link WHERE users_id=9)