取り出す・絞り込む

INPUT · スライド

条件をひっくり返す

01 / 05

「〜ではない」をそのまま書く

NOT LIKE で「ふくまない」が書けたね。じつは NOTLIKE 専用じゃない。どんな条件の前にも置けるんだ。

WHERE NOT 条件 と書けば、その条件に当てはまらない行が返ってくるよ。

SELECT * FROM shops  WHERE NOT floor = 1;

実行結果

2 | こみち書房 | ほん | 2 | 3
5 | ひなた書房 | ほん | 2 | 5
6 | こみちカフェ | カフェ | 3 | 7

02 / 05

比較演算子にも付けられる

>< の条件にも NOT を付けられる。NOT staff >= 5 は「5人以上ではない」、つまり4人以下ということだよ。

頭の中でひっくり返さずに、元の条件のまま書いて NOT を足すほうがまちがえにくいこともある。

SELECT name, staff FROM shops  WHERE NOT staff >= 5;

実行結果

あおぞらパン | 4
こみち書房 | 3
みなと花店 | 2

03 / 05

かっこで囲む範囲に気をつける

NOTすぐ右の条件ひとつにかかる。条件が2つあるときは、どこまでを打ち消したいのかを ( ) ではっきりさせよう。

  • NOT (a AND b) … 「aかつb」ではないもの
  • NOT a AND b … 「aではない」かつ「b」

見た目は似ているのに結果はぜんぜん違う。迷ったら囲むのが安全だよ。

SELECT name, kind, floor FROM shops  WHERE NOT (kind = 'ほん' AND floor = 2);

04 / 05

`<>` との使い分け

NOT kind = 'ほん'kind <> 'ほん' は同じ結果になる。どちらで書いてもいいよ。

  • 短く書きたい<>
  • 元の条件を見せたまま打ち消したいNOT

読む人にとって分かりやすいほうを選ぼう。

SELECT name, kind FROM shops  WHERE NOT kind = 'ほん';

実行結果

あおぞらパン | パン
ゆうやけパン工房 | パン
みなと花店 | はな
こみちカフェ | カフェ

05 / 05

「以外」を数えて確かめる

NOT を使ったときは、元の条件の結果と足して全体の件数になるかを見ると確かめやすいよ。

kind = 'ほん' が2件、NOT kind = 'ほん' が4件、テーブル全体が6件。ちゃんと合っているね。

「のぞいたつもりが多すぎる・少なすぎる」というときは、この足し算がずれていないか見てみよう。ここから書いてみよう。