2009-07-28 112 views
0
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语句有什么问题?

回答

6

从多个同你不能合并的条件,但你必须与每个连接单独列出来:

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

感谢他的工作:) – 2009-07-28 09:22:18

1

你只得到了一个ON子句和两个内部连接。对于INNER JOIN,使用ON加入条件是强制性的。所以SQL解析器可能会变得困惑,并且意外地看到你的时间。

3

您有两个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%' 
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

对于您正在进行的每个连接,您必须拥有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

+0

是的人,堆栈溢出岩石;) – 2009-07-28 09:28:19

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%' 
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和连接条件。