2016-05-26 7 views
1

複数のテーブルからデータを選択しているクエリを作成していますが、ユーザーが現在表示しているエントリを選択したくありません。私はAND NOT構文を使用して他のクエリでこれを完了しましたが、LIKEと組み合わせてこれを使用すると、まだ私は探していない行を返しますか?LIKE ... AND NOT ... sql

実行時に構文にエラーはありませんが、それでも正しくありません。ここに私の質問です。

SELECT id AS num, mix_title AS title, table_type AS type, header, post_date, counter 
FROM mixes 
WHERE keywords LIKE ('%#workout%') 
    OR keywords LIKE ('%#drunk_fairy%') 
AND NOT id='1' 

私はすべてのLIKEの行を返すために、上記のコードをしたいと思いますが、私は聞いてどのようにあまりにもわからないではなかった、これはすでに求められている場合は、idが1

謝罪に等しいです質問、ありがとう。

+0

'AND NOT ID = '1' '。 ANDの前には... – jarlh

+0

...弦周りのかっこはもちろん余分ですが。そして 'id'は文字列か、なぜ1のために引用符を使用しますか? –

+0

IDの値が動的で、場合によっては数字と文字列を含む可能性があるので、私は1のために引用符を使用していました。 –

答えて

5

あなたはANDORよりも優先されるため、括弧を使用する必要があります(( '%#ワークアウト%' のようなキーワード)OR( '%#のdrunk_fairy%')LIKEキーワード)

SELECT id AS num, mix_title AS title, table_type AS type, 
     header, post_date, counter 
FROM mixes 
WHERE (keywords LIKE ('%#workout%') OR keywords LIKE('%#drunk_fairy%')) 
     AND NOT id='1'