如何在 MySQL 中将数据插入表 C,前提是这些数据在与表 A 比较时不在表 B 中?
为此,请在表 A 和 B 上使用左连接。让我们创建第一个表 -
mysql> create table demo20 −> ( −> id int, −> name varchar(20) −> ); Query OK, 0 rows affected (1.87 sec)
使用 insert 命令将一些记录插入表中 -
mysql> insert into demo20 values(100,'John'); Query OK, 1 row affected (0.07 sec) mysql> insert into demo20 values(101,'Bob'); Query OK, 1 row affected (0.24 sec) mysql> insert into demo20 values(102,'Mike'); Query OK, 1 row affected (0.12 sec) mysql> insert into demo20 values(103,'Carol'); Query OK, 1 row affected (0.15 sec)
使用 select 语句显示表中的记录 -
mysql− select *from demo20;
这将产生以下输出 -
+------+-------+ | id | name | +------+-------+ | 100 | John | | 101 | Bob | | 102 | Mike | | 103 | Carol | +------+-------+ 4 rows in set (0.00 sec)
以下是创建第二个表的查询 -
mysql> create table demo21 −> ( −> id int, −> name varchar(20) −> ); Query OK, 0 rows affected (1.70 sec)
使用 insert 命令将一些记录插入表中 -
mysql> insert into demo21 values(100,'Sam'); Query OK, 1 row affected (0.12 sec) mysql> insert into demo21 values(101,'Adam'); Query OK, 1 row affected (0.14 sec) mysql> insert into demo21 values(133,'Bob'); Query OK, 1 row affected (0.13 sec) mysql> insert into demo21 values(145,'David'); Query OK, 1 row affected (0.15 sec)
使用 select 语句显示表中的记录 -
mysql> select *from demo21;
这将产生以下输出 -
+------+-------+ | id | name | +------+-------+ | 100 | Sam | | 101 | Adam | | 133 | Bob | | 145 | David | +------+-------+ 4 rows in set (0.00 sec)
以下是创建第三个表的查询 -
mysql> create table demo22 −> ( −> id int, −> name varchar(20) −> ); Query OK, 0 rows affected (1.39 sec)
现在,假设 demo20 的表名为 A,demo21 的表名为 B,demo22 的表名为 C。以下是将数据插入表 C 的查询,前提是这些数据在与 A 比较时不在表 B 中 -
mysql> insert into demo22(id,name) −> select tbl1.id,tbl1.name from demo20 tbl1 −> left join demo21 tbl2 on tbl2.id=tbl1.id −> where tbl2.id is null; Query OK, 2 rows affected (0.21 sec) Records: 2 Duplicates: 0 Warnings: 0
使用 select 语句显示表中的记录 -
mysql> select *from demo22;
这将产生以下输出 -
+------+-------+ | id | name | +------+-------+ | 102 | Mike | | 103 | Carol | +------+-------+ 2 rows in set (0.00 sec)
广告