这个SQL语句出了什么问题?

时间:2009-07-28 09:17:03

标签: sql

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

它说: 关键字'WHERE'附近的语法不正确。

7 个答案:

答案 0 :(得分:6)

您无法组合多个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%'

答案 1 :(得分:3)

您有两个JOIN但只有一个ON。你可能想要

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

答案 2 :(得分:3)

在第一次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%'

答案 3 :(得分:3)

您正在进行的每个联接都必须有ON条款。这应该解决它:

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

编辑:该死的,其他四个答案才能完成输入! :P

答案 4 :(得分:2)

您的INNER 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%'

答案 5 :(得分:2)

尝试将其重写为:

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

每个INNER JOIN都需要相应的ON关键字和连接条件。

答案 6 :(得分:1)

你只有一个ON子句和两个INNER JOIN。对于INNER JOIN,必须使用ON连接条件。因此,SQL解析器可能会感到困惑并意外地看到你的WHEN。