0

我试图获取parts_keywords 中未包含在parts_questions 中的所有行。不幸的是,我得到了两个表的所有行。

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 元素的结果放在一起对我来说很重要。

请帮忙

4

2 回答 2

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
于 2013-02-15T22:01:53.703 回答
0

尝试使用括号

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
于 2013-02-15T22:06:01.407 回答