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'附近的语法不正确。这条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'附近的语法不正确。这条SQL语句有什么问题?
从多个同你不能合并的条件,但你必须与每个连接单独列出来:
SELECT * FROM Questions
INNER JOIN QuestionKeyword ON Questions.ID=QuestionKeyword.QuestionID
INNER JOIN Keywords ON QuestionKeyword.KeywordID=Keywords.ID
WHERE Keywords.Keyword LIKE '%es%'
你只得到了一个ON子句和两个内部连接。对于INNER JOIN,使用ON加入条件是强制性的。所以SQL解析器可能会变得困惑,并且意外地看到你的时间。
您有两个JOIN
s但只有一个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%'
您在第一个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%'
对于您正在进行的每个连接,您必须拥有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
是的人,堆栈溢出岩石;) – 2009-07-28 09:28:19
你的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%'
尝试重写它:
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和连接条件。
感谢他的工作:) – 2009-07-28 09:22:18