为什么mysql说有语法错误?
我对外部连接的世界还很陌生,我正在尝试适应它们,但我不知道为什么mysql会说语法不正确。有人愿意提供一些见解吗为什么mysql说有语法错误?,mysql,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_update
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)
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
顺便说一句,您还可以为其他表使用“内部联接”,因此您没有两种类型的语法:
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
子句应该在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
顺便说一句,您还可以为其他表使用“内部联接”,因此您没有两种类型的语法:
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
子句仅用于过滤。我认为这样可以提高查询的可读性。像这样使用
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
像这样使用
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
因为有语法错误
试一试
从
表中的引用
位于的WHERE\u条件之前
也可以查看,因为存在语法错误
试一试
从
表中的引用
位于的WHERE\u条件之前
也可以看看这个
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
之后使用,请尝试此操作
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
之后使用,因此您的语法是错误的,在您的情况下,请在语句末尾使用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相同
希望这能帮助你 是,您的语法错误,在您的情况下,在语句末尾使用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相同
希望这能帮助你 实际上,您通过使用两个左连接更改了查询的行为。这可能是对OP的lef。将其设置为内部连接应该足够了。您实际上通过使用两个左连接更改了查询的行为。这可能是对OP的lef。将其设置为内部连接应该足够了。