什么时候我们会用到复制表?例如:我现在对一张表进行操作,但是怕误删数据,所以在同一个数据库中建一个表结构一样,表数据也一样的表,以作备份。如果用mysqldump比较麻烦,备份.MYD,.MYI这样的文件呢,操作起来也还是麻烦。 一,复制表结构 方法1: mysql> create table a like…
September 14, 2019
Mysql: 查询纪录在一张表而不在另一张表, 查询在一个表而不在另一个表中的数据, Select rows from a table that are not in another
Table1:
+-----------+----------+------------+ | FirstName | LastName | BirthDate | +-----------+----------+------------+ | Tia | Carrera | 1975-09-18 | | Nikki | Taylor | 1972-03-04 | | Yamila | Diaz | 1972-03-04 | +-----------+----------+------------+
Table2:
+-----------+----------+------------+ | FirstName | LastName | BirthDate | +-----------+----------+------------+ | Tia | Carrera | 1975-09-18 | | Nikki | Taylor | 1972-03-04 | +-----------+----------+------------+
输出在table1,而不在table2的数据。Example output for rows in Table1 that are not in Table2:
+-----------+----------+------------+ | FirstName | LastName | BirthDate | +-----------+----------+------------+ | Yamila | Diaz | 1972-03-04 | +-----------+----------+------------+
方法:
SELECT a.* FROM tbl_1 a LEFT JOIN tbl_2 b ON a.LastName = b.LastName WHERE b.FirstName IS NULL
要选择第一个表中第二个中没有任何对应值的行,请尝试:
SELECT first.* FROM first_table first LEFT JOIN second_table second ON first.id = second.id WHERE second.id IS NULL
相反,如果您只想在第一个表中选择也在第二个表中的行(但丢弃在第二个表中没有相应值的行),请尝试:
SELECT first.* FROM first_table first LEFT JOIN second_table second ON first.id = second.id WHERE second.id IS NOT NULL
MySQL查询在一个表而不在另一个表中的数据,
A、B两表,找出ID字段中,存在A表,但是不存在B表的数据。A表总共13w数据,去重后大约3W条数据,B表有2W条数据,且B表的ID字段有索引。
方法一
使用 not in ,容易理解,效率低 ~执行时间为:1.395秒~
select distinct A.ID from A where A.ID not in (select ID from B)
方法二
使用 left join…on… , “B.ID isnull” 表示左连接之后在B.ID 字段为 null的记录 ~执行时间:0.739秒~
select A.ID from A left join B on A.ID=B.ID where B.ID is null
方法三
逻辑相对复杂,但是速度最快 ~执行时间: 0.570秒~
select * from B where (select count(1) as num from A where A.ID = B.ID) = 0
方法四
SELECT l.* FROM t_left l WHERE l.value NOT IN ( SELECT value FROM t_right r )
方法五
SELECT l.* FROM t_left l WHERE NOT EXISTS ( SELECT NULL FROM t_right r WHERE r.value = l.value )
本文:Mysql: 查询纪录在一张表而不在另一张表, 查询在一个表而不在另一个表中的数据, Select rows from a table that are not in another