ここではMySQLで「~以外」「~を除く」データを取得する方法を紹介しています。
「~以外」「~を除く」データを取得する方法
<>,!=:1つの値を除くデータを取得する
ある1つの値を除くデータを取得する場合は、<>または!=を使います。
次のSQLでは、emp_name列の値が「Suzuki」以外のデータを取得しています。
mysql> SELECT * FROM tab1 WHERE emp_name <> 'Suzuki';
+--------+----------+-------+------+
| emp_id | emp_name | dept | age2 |
+--------+----------+-------+------+
| 00002 | Tanaka | SALES | 20 |
| 00003 | Kizaki | SALES | 20 |
| 00004 | Tanaka | DEV | 20 |
| 00005 | Kizaki | DEV | 20 |
| 00006 | Nakata | DEV | 20 |
+--------+----------+-------+------+
5 rows in set (0.00 sec)
mysql> SELECT * FROM tab1 WHERE emp_name != 'Suzuki';
+--------+----------+-------+------+
| emp_id | emp_name | dept | age2 |
+--------+----------+-------+------+
| 00002 | Tanaka | SALES | 20 |
| 00003 | Kizaki | SALES | 20 |
| 00004 | Tanaka | DEV | 20 |
| 00005 | Kizaki | DEV | 20 |
| 00006 | Nakata | DEV | 20 |
+--------+----------+-------+------+
5 rows in set (0.00 sec)
NOT IN:複数の値を除くデータを取得する
任意の複数の値を除くデータを取得する場合には、NOT INを使うことが出来ます。
次のSQLでは、emp_name列の値が「Suzuki」「Tanaka」以外のデータを取得しています。
mysql> SELECT * FROM tab1 WHERE emp_name NOT IN ('Suzuki','Tanaka');
+--------+----------+-------+------+
| emp_id | emp_name | dept | age2 |
+--------+----------+-------+------+
| 00003 | Kizaki | SALES | 20 |
| 00005 | Kizaki | DEV | 20 |
| 00006 | Nakata | DEV | 20 |
+--------+----------+-------+------+
3 rows in set (0.00 sec)
NOT NULL:NULL以外のデータを取得する
ある列の値がNULL以外のデータを取得する場合は、IS NOT NULLを使います。
次のSQLでは、emp_name列の値がNULL以外のデータを取得しています。
mysql> SELECT * FROM tab1 WHERE emp_name IS NOT NULL;
+--------+----------+-------+------+
| emp_id | emp_name | dept | age2 |
+--------+----------+-------+------+
| 00001 | Suzuki | HR | 20 |
| 00002 | Tanaka | SALES | 20 |
| 00003 | Kizaki | SALES | 20 |
| 00004 | Tanaka | DEV | 20 |
| 00005 | Kizaki | DEV | 20 |
| 00006 | Nakata | DEV | 20 |
+--------+----------+-------+------+
6 rows in set (0.00 sec)