MySQL 選擇查詢,用於從一個表中選擇不在另一個表中的行?


在我們的示例中,我們將建立兩個表並應用自然左連線來獲取不在第二個表中的表中的行。

建立第一個表。

mysql> create table FirstTableDemo
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.48 sec)

將記錄插入第一個表。

mysql> insert into FirstTableDemo values(1,'Bob'),(2,'John'),(3,'Carol');
Query OK, 3 rows affected (0.13 sec)
Records: 3  Duplicates: 0  Warnings: 0

顯示所有記錄。

mysql> select *from FirstTableDemo;

以下是輸出。

+------+-------+
| id   | name  |
+------+-------+
|    1 | Bob   |
|    2 | John  |
|    3 | Carol |
+------+-------+
3 rows in set (0.00 sec)

建立第二個表。

mysql> create table SecondTableDemo
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.62 sec)

將記錄插入第二個表。

mysql> insert into SecondTableDemo values(1,'Bob'),(2,'John');
Query OK, 2 rows affected (0.12 sec)
Records: 2  Duplicates: 0  Warnings: 0

顯示所有記錄。

mysql> select *from SecondTableDemo;

以下是輸出。

+------+------+
| id   | name |
+------+------+
|    1 | Bob  |
|    2 | John |
+------+------+

以下是選擇不在第二個表中的行的語法。

mysql> SELECT tbl1.*
    -> FROM FirstTableDemo tbl1
    -> NATURAL LEFT JOIN  SecondTableDemo tbl2
    -> where tbl2.name IS NULL;

以下是顯示在第一個表中但在第二個表中不存在的行(即“Carol”)的輸出。

+------+-------+
| id   | name  |
+------+-------+
|    3 | Carol |
+------+-------+
1 row in set (0.03 sec)

更新於: 2019-07-30

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告