两张表,字段名一样,从一张表A中查询到另外一张表B中没有的记录,SQL语句怎么写?

A是数据表,B是历史记录表

A中使用了的数据,会存储到B表中。同时存入A中的数据可能会有重复的。怎么确保从A中提取的数据都是没有使用过的新记录。

select * from B where 字段 in (select 字段 from A)
查询A中是否在B中存在

字段改成你要查的字段

提取的时候用 select distinct 字段 from A where 字段 not in (select 字段 from B) 插入时候用追问

这个行不行啊。表中所有字段联合唯一,很多记录只有一个字段的数据不一样,会不会导致有的记录查询不出来啊

追答

你去重复总得有个标准吧,要以哪个字段为标准就distinct哪个字段,不然去不了重复,就像你说的表中所有字段联合唯一,没有一个作为标准的就没法判断的

追问

表只有两个字段,Date, Time

一个Date可以有多个Time对应
但是表中可以有多个Date例如
Date Time
2014-8-20 17:32:04
2014-8-20 17:32:15
2014-8-20 17:32:20
2014-8-21 17:32:23
2014-8-21 17:32:29

追答

我知道可以有多条,你的重复标准是什么,就像你列出来的都算不重复?我说的是你要去重复总得有标准是不,你标准都没有,怎么去重

追问

重复的标准是所有字段都一样啊
2014-8-21 11:31:49
2014-8-21 11:31:49
A.Date == B.Data && A.Time == B.Time

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-20
用这个函数distinct去除重复条件根据时间限制 , 或者B表 - A表 minus函数
相似回答