我对外连接的世界很新,我试图习惯它们,但我不知道为什么mysql说语法不正确。有人关心提供一些见解吗?
SELECT * FROM user_courses, course_updates
WHERE user_courses.crn = course_updates.crn AND user_courses.user_id = 1
LEFT JOIN followers ON (followers.followee = course_updates.user_id)
答案 0 :(得分:3)
LEFT JOIN
子句应该在WHERE
子句之前。
SELECT * FROM user_courses, course_updates
LEFT JOIN followers ON (followers.followee = course_updates.user_id)
WHERE user_courses.crn = course_updates.crn AND user_courses.user_id = 1
顺便说一下,你也可以为其他表使用`INNER JOIN,所以你没有两种语法:
SELECT * FROM user_courses
INNER JOIN course_updates on user_courses.crn = course_updates.crn
LEFT JOIN followers ON followers.followee = course_updates.user_id
WHERE user_courses.user_id = 1
请注意,我省略了ON
条件周围的括号,这是完全有效的。此外,您可以看到使用INNER JOIN
,您可以在连接本身中指定连接条件,只留下WHERE
子句进行过滤。我认为这会提高查询的可读性。
答案 1 :(得分:1)
像这样使用
SELECT * FROM user_courses, course_updates
LEFT JOIN followers ON (followers.followee = course_updates.user_id)
WHERE user_courses.crn = course_updates.crn AND user_courses.user_id = 1
答案 2 :(得分:0)
因为存在语法错误。
尝试
SELECT *
FROM user_courses LEFT JOIN
course_updates ON user_courses.crn = course_updates.crn
AND user_courses.user_id = 1 LEFT JOIN
followers ON (followers.followee = course_updates.user_id)
FROM table_references
位于WHERE where_condition
也可以查看JOIN Syntax
答案 3 :(得分:0)
试试这个..
SELECT * FROM user_courses INNER JOIN course_updates ON user_courses.crn = course_updates.crn LEFT JOIN followers ON followers.followee = course_updates.user_id WHERE user_courses.user_id = 1
因为WHERE
JOIN
子句
答案 4 :(得分:0)
是的,您的语法错误,在您的情况下,在语句末尾使用 WHERE 子句,如下所示:
SELECT *
FROM user_courses uc
INNER JOIN course_updates cu ON cu.crn = uc.crn
LEFT OUTER JOIN followers f ON f.followee = cu.USER_ID
WHERE uc.USER_ID = 1
还要确保f.followee类型和cu.USER_ID相同。
希望这会对你有帮助!!!