简体   繁体   English

此SQL语句有什么问题?

[英]What's wrong with this SQL statement?

SELECT * FROM Questions 
INNER JOIN QuestionKeyword INNER JOIN Keywords
ON Questions.ID=QuestionKeyword.QuestionID 
AND QuestionKeyword.KeywordID=Keywords.ID
WHERE Keywords.Keyword LIKE '%es%'

It says: Incorrect syntax near the keyword 'WHERE'. 它说:关键字“ WHERE”附近的语法不正确。

You cannot combine the conditions from multiple JOINs but you have to list them separately with each join: 您不能合并来自多个JOIN的条件,但必须在每个联接中分别列出它们:

SELECT * FROM Questions 
INNER JOIN QuestionKeyword ON Questions.ID=QuestionKeyword.QuestionID
INNER JOIN Keywords  ON QuestionKeyword.KeywordID=Keywords.ID
WHERE Keywords.Keyword LIKE '%es%'

You have two JOIN s but only one ON . 您有两个JOIN但只有一个ON You probably want 你可能想要

SELECT
    *
FROM
    Questions
    INNER JOIN QuestionKeyword ON Questions.ID = QuestionKeyword.QuestionID
    INNER JOIN Keywords ON QuestionKeyword.KeywordID = Keywords.ID
WHERE
    Keywords.Keyword LIKE '%es%'

You're missing an "ON" after the first INNER JOIN. 您在第一个INNER JOIN之后错过了“ ON”。

SELECT * 
FROM Questions 
    INNER JOIN QuestionKeyword
        ON QuestionKeyword.QuestionID=Questions.ID
    INNER JOIN Keywords
        ON QuestionKeyword.KeywordID=Keywords.ID
WHERE Keywords.Keyword LIKE '%es%'

You must have an ON clause for each join you're doing. 您必须为每个联接使用ON子句。 This should fix it: 这应该解决它:

SELECT * FROM Questions 
INNER JOIN QuestionKeyword 
ON Questions.ID=QuestionKeyword.QuestionID 
INNER JOIN Keywords
ON QuestionKeyword.KeywordID=Keywords.ID
WHERE Keywords.Keyword LIKE '%es%'

Edit: Damn, four other answers before I could finish typing! 编辑:该死,我无法完成输入之前还有其他四个答案! :P :P

Your INNER JOIN is messed up. 您的INNER JOIN搞砸了。

Something like this should work: 这样的事情应该起作用:

SELECT * FROM Questions 
INNER JOIN QuestionKeyword ON Questions.ID=QuestionKeyword.QuestionID 
INNER JOIN Keywords ON QuestionKeyword.KeywordID=Keywords.ID
WHERE Keywords.Keyword LIKE '%es%'

Try rewriting it as: 尝试将其重写为:

SELECT *
FROM Questions
INNER JOIN QuestionKeyword ON Questions.ID=QuestionKeyword.QuestionID
INNER JOIN Keywords ON QuestionKeyword.KeywordID=Keywords.ID
WHERE Keywords.Keyword LIKE '%es%'

Each INNER JOIN requires a corresponding ON keyword and join condition. 每个INNER JOIN都需要一个对应的ON关键字和联接条件。

You've only got one ON clause and two INNER JOINs. 您只有一个ON子句和两个INNER JOIN。 For an INNER JOIN, join conditions with ON are mandatory. 对于INNER JOIN,必须启用ON的连接条件。 So the SQL parser is likely getting confused and seeing your WHEN unexpectedly. 因此,SQL解析器可能会感到困惑,并意外地看到您的WHEN。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM