2013-02-15 115 views
0

我嘗試獲取parts_key中未包含的parts_keywords中的所有行。不幸的是,我得到了兩張表的所有行。mysql中的左外連接問題

SELECT *FROM parts_keywords 
    LEFT OUTER JOIN parts_questions ON parts_keywords.ID = parts_questions.question_id 
    WHERE parts_questions.question_id IS NULL 
    AND parts_keywords.term LIKE '%where%' || parts_keywords.term LIKE '%how%' || parts_keywords.term LIKE '%who%' || parts_keywords.term LIKE '%what%' 
    ORDER BY parts_keywords.ID DESC lIMIT 15 

我試過用OR來代替||。我也嘗試使用MATCH而不是LIKE無濟於事。

當我只使用一個LIKE元素時,例如'誰'我得到正確的結果。然而,對於所有LIKE元素一起獲得結果是非常重要的。

請幫助你錯過

+0

嘗試添加括號到您的WHERE子句。這不是按照你的期望分組。 – Barmar 2013-02-15 22:01:45

回答

0

嘗試使用paranthesis

SELECT * FROM parts_keywords pk 
LEFT OUTER JOIN parts_questions pq ON pk.ID = pq.question_id 
WHERE pq.question_id IS NULL 
AND (pk.term LIKE '%where%' OR pk.term LIKE '%how%' OR pk.term LIKE '%who%' OR pk.term  LIKE '%what%') 
ORDER BY parts_keywords.ID DESC lIMIT 15 
+0

天才!這工作。謝謝 – earnest 2013-02-15 22:16:21

+0

大聲笑 - 愛這是如何相同的答案,因爲我只在15分鐘後發佈。很好玩。 – 2013-02-15 23:44:21

+0

我的歉意,當我最初發布我的答案時,沒有其他人回答這個問題 – ilikemypizza 2013-02-18 16:51:39

0

()在你的OR子句

SELECT * 
FROM parts_keywords 
    LEFT OUTER JOIN parts_questions ON parts_keywords.ID = parts_questions.question_id 
WHERE parts_questions.question_id IS NULL 
AND (parts_keywords.term LIKE '%where%' 
OR parts_keywords.term LIKE '%how%' 
OR parts_keywords.term LIKE '%who%' 
OR parts_keywords.term LIKE '%what%') 
ORDER BY parts_keywords.ID DESC lIMIT 15