为什么mysql说有语法错误?

时间:2013-07-25 06:08:27

标签: mysql

我对外连接的世界很新,我试图习惯它们,但我不知道为什么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)

5 个答案:

答案 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)

来自enter link description here

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相同。

希望这会对你有帮助!!!