0

私はparts_questionsに含まれていないparts_keywordsのすべての行を取得しようとしています. 残念ながら、両方のテーブルのすべての行を取得しています。

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 を使用してみました。また、LIKE の代わりに MATCH を使用してみましたが、役に立ちませんでした。

「who」などの LIKE 要素を 1 つだけ使用すると、正しい結果が得られます。ただし、すべての 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 に答える