Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么mysql说有语法错误?_Mysql - Fatal编程技术网

为什么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

我对外部连接的世界还很陌生,我正在尝试适应它们,但我不知道为什么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)

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。将其设置为内部连接应该足够了。