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)
广告