----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2014-04-08 14:28:04
-- Verstion:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[vip_lljgwbjmx01]
if object_id('[vip_lljgwbjmx01]') is not null drop table [vip_lljgwbjmx01]
go
create table [vip_lljgwbjmx01]([traderid] int,[materialid] int,[vipbmclid] int)
insert [vip_lljgwbjmx01]
select 2,1,7 union all
select 2,2,1 union all
select 2,2,7 union all
select 2,3,14
--> 测试数据:[vip_lljgwbjmx02]
if object_id('[vip_lljgwbjmx02]') is not null drop table [vip_lljgwbjmx02]
go
create table [vip_lljgwbjmx02]([traderid,materialid,vipbmclid] int,[C2] int,[C3] int)
insert [vip_lljgwbjmx02]
select 2,1,7 union all
select 2,2,1 union all
select 2,3,14 union all
select 2,7,13 union all
select 6,3,17
--------------开始查询--------------------------select * from [vip_lljgwbjmx02] WHERE CHECKSUM(*) NOT IN (SELECT CHECKSUM(*) FROM vip_lljgwbjmx01)----------------结果----------------------------
/* traderid,materialid,vipbmclid C2 C3
----------------------------- ----------- -----------
2 7 13
6 3 17(2 行受影响)
*/
-- Author :fredrickhu(小F,向高手学习)
-- Date :2014-04-08 14:28:04
-- Verstion:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[vip_lljgwbjmx01]
if object_id('[vip_lljgwbjmx01]') is not null drop table [vip_lljgwbjmx01]
go
create table [vip_lljgwbjmx01]([traderid] int,[materialid] int,[vipbmclid] int)
insert [vip_lljgwbjmx01]
select 2,1,7 union all
select 2,2,1 union all
select 2,2,7 union all
select 2,3,14
--> 测试数据:[vip_lljgwbjmx02]
if object_id('[vip_lljgwbjmx02]') is not null drop table [vip_lljgwbjmx02]
go
create table [vip_lljgwbjmx02]([traderid,materialid,vipbmclid] int,[C2] int,[C3] int)
insert [vip_lljgwbjmx02]
select 2,1,7 union all
select 2,2,1 union all
select 2,3,14 union all
select 2,7,13 union all
select 6,3,17
--------------开始查询--------------------------select * from [vip_lljgwbjmx02] WHERE CHECKSUM(*) NOT IN (SELECT CHECKSUM(*) FROM vip_lljgwbjmx01)----------------结果----------------------------
/* traderid,materialid,vipbmclid C2 C3
----------------------------- ----------- -----------
2 7 13
6 3 17(2 行受影响)
*/
需要显示列名, select 出来的结果,还是加 left join 才形成报表
服务器: 消息 207,级别 16,状态 3,行 1
列名 'traderid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'materialid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'vipbmclid' 无效。
这样就报错,指定列名就报错了
traderid,materialid,vipbmclid
2 7 13
6 3 17
traderid,materialid,vipbmclid
from
[vip_lljgwbjmx02] as a
where
not exists(select 1 from [vip_lljgwbjmx01] where traderid=a.traderid and materialid=a.materialid and vipbmclid=a.vipbmclid)
服务器: 消息 207,级别 16,状态 3,行 1
列名 'traderid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'materialid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'vipbmclid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'traderid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'materialid' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'vipbmclid' 无效。
left join vip_lljgwbjmx02 02 on 02.traderid = 01.traderid
where 02.traderid is null
create table #t
(
_id int identity(1,1),
traderid int,
materialid int,
vipbmclid int,
表id int
)insert into #t(traderid,materialid,vipbmclid,表id)
select traderid,materialid,vipbmclid,1 From 视图vip_lljgwbjmx01
union all
select traderid,materialid,vipbmclid,2 From 视图vip_lljgwbjmx02select a.traderid,a.materialid,a.vipbmclid
from #t a
join
(
select _id From #t
group by traderid,materialid,vipbmclid
having COUNT(*)=1
) b on a._id=b._id
where 表id =2drop table #t没测试
自己调下
看下有没有更快点