sql server2K 如何查询两个表中相同的记录

rmini 2009-09-16 11:18:46
现在有tb1和tb2,两个表结构完全一样,如何查询两个表中的相同记录(即记录既在tb1中,也在tb2中) ???
...全文
235 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangmeichang_520 2011-08-19
  • 打赏
  • 举报
回复
select * from tb1 where checksum(*) not in (select checksum(*) from tb2)
union all
select * from tb2 where checksum(*) not in (select checksum(*) from tb1)

这句子中依然有问题!

包含 UNION 运算符的 SQL 语句中的所有查询都必须在目标列表中具有相同数目的表达式。
rmini 2009-09-16
  • 打赏
  • 举报
回复
我再验证一下看看
黄_瓜 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jinjazz 的回复:]
SQL codeselect*from tb1where checksum(*)in (select checksum(*)from tb2)
[/Quote]
xuexi
jinjazz 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 forevermini 的回复:]
那如果查询两个表中不相同的记录呢 ???

就把in 换成 not in 吗 ???
[/Quote]

是的,不过还要union一下
select * from tb1 where checksum(*) not in (select checksum(*) from tb2)
union all
select * from tb2 where checksum(*) not in (select checksum(*) from tb1)


rmini 2009-09-16
  • 打赏
  • 举报
回复
那如果查询两个表中不相同的记录呢 ???

就把in 换成 not in 吗 ???
--小F-- 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 forevermini 的回复:]
请问 checksum(*) 是什么意思?
[/Quote]

去查联机丛书
CHECKSUM
返回在表的行上或在表达式列表上计算的校验值。CHECKSUM 用于生成哈希索引。

语法
CHECKSUM ( * | expression [ ,...n ] )

参数
*

指定在表的所有列上进行计算。如果有任一列是非可比数据类型,则 CHECKSUM 返回错误。不可比数据类型是 text、ntext、image、cursor 以及基本类型为前 4 个数据类型之一的 sql_variant。

expression

是除非可比数据类型之外的任何类型的表达式。

rmini 2009-09-16
  • 打赏
  • 举报
回复
请问 checksum(*) 是什么意思?
--小F-- 2009-09-16
  • 打赏
  • 举报
回复
剪剪的正确
如果用
select * from a where id in(select id from b)这样的处理一般的也可以了
辛鹤 2009-09-16
  • 打赏
  • 举报
回复
select * from tb1 where checksum(*) in (select checksum(*) from tb2)
黄_瓜 2009-09-16
  • 打赏
  • 举报
回复
select a.* from ta a,tb b where 
a.字段1=b.字段1
and a.字段2=b.字段2
and a.字段3=b.字段3
.....
jinjazz 2009-09-16
  • 打赏
  • 举报
回复
select * from tb1 where checksum(*) in (select checksum(*) from tb2)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧