首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 表结构相同的两表对比 [已结贴,结贴人:lzhongf]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lzhongf
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-18 10:42:09 楼主
    a
    rno  name  deptname  jine
    1    aa      rl        5
    1    aa      rl        5
    1    aa      rl        5
    2    cc      cw        6
    2    cc      cw        6
    3    bb      xx        5

    rno  name  deptname  jine
    1    aa      rl      5
    2    cc      cw      6


    结果为:把b 表中没有的结果显示出来
    rno  name  deptname jine
    1    aa      rl      5
    1    aa      rl      5
    2    cc      cw      6
    3    bb      xx      5
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • roy_88
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      4

    发表于:2008-05-18 10:44:371楼 得分:0
    2000用临时表生成自增
    2005用row_number实现
    a表出现重复值
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Limpire
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-05-18 10:55:532楼 得分:0
    你这个是求 except all 的结果,SQL尚未直接实现,通过row_number()和except来实现,语法比较复杂。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Amo860129
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-18 11:12:323楼 得分:0
    SQL code
    select * from a except select * from b
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Herb2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-18 17:35:354楼 得分:10
    SQL code
    /******************************************/ /*回复:代码20080518001 总:00000000019 */ /*主题:excpt all */ /*作者:二等草 */ /******************************************/ set nocount on /************例子数据 begin****************/ create table ta (rno int,name varchar(10),deptname varchar(10),jine int) insert ta select 1, 'aa', 'rl' ,5 insert ta select 1, 'aa' , 'rl' , 5 insert ta select 1, 'aa' , 'rl' , 5 insert ta select 2, 'cc' , 'cw' , 6 insert ta select 2, 'cc' , 'cw' , 6 insert ta select 3, 'bb', 'xx' ,5 create table tb (rno int, name varchar(10),deptname varchar(10),jine int) insert tb select 1, 'aa', 'rl', 5 insert tb select 2, 'cc', 'cw', 6 go /************例子数据 end******************/ /************代码 begin***************/ if object_id('tempdb..#') is not null drop table # select *,taid=0,tas=checksum(*) into # from ta order by checksum(*) declare @i int,@s bigint select @s = 0 update # set taid = @i ,@i = case when @s =tas then @i +1 else 1 end,@s =tas delete a from # a where taid<=(select count(*) from tb where checksum(*) = a.tas) select * into #1 from # if 1=1 alter table #1 drop column taid,tas select * from #1 drop table #,#1 go /************代码 end*****************/ /************结果 begin*************** rno name deptname jine ----------- ---------- ---------- ----------- 1 aa rl 5 1 aa rl 5 2 cc cw 6 3 bb xx 5 ************结果 end*****************/ /************清除*************************/ drop table ta,tb
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hery2002
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-05-18 17:37:225楼 得分:0
    路过,ls都给出答案了~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Herb2
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-18 17:39:166楼 得分:10
    SQL code
    /******************************************/ /*回复:代码20080518001 总:00000000019 */ /*主题:excpt all */ /*作者:二等草 */ /******************************************/ set nocount on /************例子数据 begin****************/ create table ta (rno int,name varchar(10),deptname varchar(10),jine int) insert ta select 1, 'aa', 'rl' ,5 insert ta select 1, 'aa' , 'rl' , 5 insert ta select 1, 'aa' , 'rl' , 5 insert ta select 2, 'cc' , 'cw' , 6 insert ta select 2, 'cc' , 'cw' , 6 insert ta select 3, 'bb', 'xx' ,5 create table tb (rno int, name varchar(10),deptname varchar(10),jine int) insert tb select 1, 'aa', 'rl', 5 insert tb select 2, 'cc', 'cw', 6 go /************例子数据 end******************/ /************代码 begin***************/ select *,taid=0,tas=checksum(*) into # from ta order by checksum(*) exec(N'declare @i int,@s bigint select @s = 0 update # set taid = @i ,@i = case when @s =tas then @i +1 else 1 end,@s =tas') exec(N'delete a from # a where taid<=(select count(*) from tb where checksum(*) = a.tas)') if 1=1 alter table # drop column taid,tas select * from # drop table # go /************代码 end*****************/ /************结果 begin*************** rno name deptname jine ----------- ---------- ---------- ----------- 1 aa rl 5 1 aa rl 5 2 cc cw 6 3 bb xx 5 ************结果 end*****************/ /************清除*************************/ drop table ta,tb
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cdzch
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-18 21:06:247楼 得分:0
    学习!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • quanbutianxie
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-18 21:30:098楼 得分:0
    4楼的兄弟太强悍了,膜拜中。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • quanbutianxie
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-19 11:27:159楼 得分:0
    请问六楼的朋友~if 1=1 是什么意思?
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved