【MySQL】「~以外」「~を除く」データを取得する方法


ここでは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)