SQL查询问题:两个表字段完全相同,表2里部分与有表1重复记录,现在要把重复的查询出来

时间:2022-07-30 06:21:13
两个表字段完全相同,表2里部分与有表1重复记录,现在要把重复的查询出来
表1:sheet  表2:sheet1
都是10个字段
求SQL查询语句

11 个解决方案

#1


sf..
只查询重复对么,,而且要完全相同?

#2


沒有主鍵什麽的嗎?

#3


select sheet1.*
from sheet inner join  sheet1 on sheet.主键=sheet1.主键 and sheet.field1=sheet.field1 and sheet.field2=sheet.field2 ...
如果有主键的话 用主键就可以了,或者吧10个字段全部加上

#4


只查ID(主键)相同的.

select a.* from a where id in (select id from b)

#5


所有字段.

--前提:表中不能有text、ntext、image、cursor 数据类型的字段。

用CheckSum()最简单:

select * from A where checksum(*) not in (select checksum(*) from B)

#6


inner join 就ok

#7


use tempdb
go

if exists (select * from sysobjects where name = 'Sheet')
drop table Sheet
go

create table Sheet(id int identity(1,1)
,name0 varchar(1)
,name1 varchar(1)
,name2 varchar(1)
,name3 varchar(1)
,name4 varchar(1)
,name5 varchar(1)
,name6 varchar(1)
,name7 varchar(1)
,name8 varchar(1)
,name9 varchar(1)
)

go



if exists (select * from sysobjects where name = 'Sheet1')
drop table Sheet1
go



create table Sheet1(id int identity(1,1)
,name0 varchar(1)
,name1 varchar(1)
,name2 varchar(1)
,name3 varchar(1)
,name4 varchar(1)
,name5 varchar(1)
,name6 varchar(1)
,name7 varchar(1)
,name8 varchar(1)
,name9 varchar(1)
)

go



insert sheet(
 name0 
,name1 
,name2 
,name3 
,name4 
,name5 
,name6 
,name7 
,name8 
,name9 
)
values
(
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a'
)


insert sheet(
 name0 
,name1 
,name2 
,name3 
,name4 
,name5 
,name6 
,name7 
,name8 
,name9 
)
values
(
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b'
)




insert sheet1(
 name0 
,name1 
,name2 
,name3 
,name4 
,name5 
,name6 
,name7 
,name8 
,name9 
)
values
(
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b'
)


select * from sheet
select * from sheet1


select * from Sheet a inner join Sheet1 b
on 
a.name0  = b.name0 and
a.name1  = b.name1 and 
a.name2  = b.name2 and
a.name3  = b.name3 and
a.name4  = b.name4 and
a.name5  = b.name5 and
a.name6  = b.name6 and
a.name7  = b.name7 and
a.name8  = b.name8 and
a.name9  = b.name9

#8


checksum

這個好用

#9


龟的办法不错,,以前也那么用过,,
不过好象校验值的限制也很多....

#10


是这样
不是把重复的筛选掉  查询其他不重复的数据
而是要把那些重复的数据查询出来

#11


checksum Mark

#1


sf..
只查询重复对么,,而且要完全相同?

#2


沒有主鍵什麽的嗎?

#3


select sheet1.*
from sheet inner join  sheet1 on sheet.主键=sheet1.主键 and sheet.field1=sheet.field1 and sheet.field2=sheet.field2 ...
如果有主键的话 用主键就可以了,或者吧10个字段全部加上

#4


只查ID(主键)相同的.

select a.* from a where id in (select id from b)

#5


所有字段.

--前提:表中不能有text、ntext、image、cursor 数据类型的字段。

用CheckSum()最简单:

select * from A where checksum(*) not in (select checksum(*) from B)

#6


inner join 就ok

#7


use tempdb
go

if exists (select * from sysobjects where name = 'Sheet')
drop table Sheet
go

create table Sheet(id int identity(1,1)
,name0 varchar(1)
,name1 varchar(1)
,name2 varchar(1)
,name3 varchar(1)
,name4 varchar(1)
,name5 varchar(1)
,name6 varchar(1)
,name7 varchar(1)
,name8 varchar(1)
,name9 varchar(1)
)

go



if exists (select * from sysobjects where name = 'Sheet1')
drop table Sheet1
go



create table Sheet1(id int identity(1,1)
,name0 varchar(1)
,name1 varchar(1)
,name2 varchar(1)
,name3 varchar(1)
,name4 varchar(1)
,name5 varchar(1)
,name6 varchar(1)
,name7 varchar(1)
,name8 varchar(1)
,name9 varchar(1)
)

go



insert sheet(
 name0 
,name1 
,name2 
,name3 
,name4 
,name5 
,name6 
,name7 
,name8 
,name9 
)
values
(
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a',
'a'
)


insert sheet(
 name0 
,name1 
,name2 
,name3 
,name4 
,name5 
,name6 
,name7 
,name8 
,name9 
)
values
(
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b'
)




insert sheet1(
 name0 
,name1 
,name2 
,name3 
,name4 
,name5 
,name6 
,name7 
,name8 
,name9 
)
values
(
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b',
'b'
)


select * from sheet
select * from sheet1


select * from Sheet a inner join Sheet1 b
on 
a.name0  = b.name0 and
a.name1  = b.name1 and 
a.name2  = b.name2 and
a.name3  = b.name3 and
a.name4  = b.name4 and
a.name5  = b.name5 and
a.name6  = b.name6 and
a.name7  = b.name7 and
a.name8  = b.name8 and
a.name9  = b.name9

#8


checksum

這個好用

#9


龟的办法不错,,以前也那么用过,,
不过好象校验值的限制也很多....

#10


是这样
不是把重复的筛选掉  查询其他不重复的数据
而是要把那些重复的数据查询出来

#11


checksum Mark