01 / 05
「〜ではない」をそのまま書く
NOT LIKE で「ふくまない」が書けたね。じつは NOT は LIKE 専用じゃない。どんな条件の前にも置けるんだ。
WHERE NOT 条件 と書けば、その条件に当てはまらない行が返ってくるよ。
SELECT * FROM shops WHERE NOT floor = 1;実行結果
2 | こみち書房 | ほん | 2 | 3 5 | ひなた書房 | ほん | 2 | 5 6 | こみちカフェ | カフェ | 3 | 7
取り出す・絞り込む
INPUT · スライド
01 / 05
NOT LIKE で「ふくまない」が書けたね。じつは NOT は LIKE 専用じゃない。どんな条件の前にも置けるんだ。
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件。ちゃんと合っているね。
「のぞいたつもりが多すぎる・少なすぎる」というときは、この足し算がずれていないか見てみよう。ここから書いてみよう。