日期:2014-05-17  浏览次数:20605 次

这DELETE语句怎么写?好像简单,但写不来.
a表
ID type
a 111
b 222
c fdsa

b表
id type
a 111
b 222
fda 555
a 33
b 111
---删除后,是以下结果,------------
b表
id type
fda 555
a 33
b 111

删除B表,(id,type) 列同时存在于a的记录

------解决方案--------------------
delete b from a where a.id=b.id and a.type=b.type
------解决方案--------------------
我来个不同的好了,大数据量一次更新的话我这个应该更好
----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-03-14 17:29:45
-- Version:
--      Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) 
-- Jun 17 2011 00:54:03 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1, v.721)
--
----------------------------
--> 测试数据:[a]
if object_id('[a]') is not null drop table [a]
go 
create table [a]([ID] varchar(1),[type] varchar(4))
insert [a]
select 'a','111' union all
select 'b','222' union all
select 'c','fdsa'
--------------开始查询--------------------------
--> 测试数据:[b]
if object_id('[b]') is not null drop table [b]
go 
create table [b]([id] varchar(3),[type] int)
insert [b]
select 'a',111 union all
select 'b',222 union all
select 'fda',555 union all
select 'a',33 union all
select 'b',111
--------------开始查询--------------------------
select * INTO #t FROM (
select * from [b]
except
select * from [a])a

TRUNCATE TABLE b

INSERT INTO b
SELECT * FROM #t

DROP TABLE #t 

----------------结果----------------------------
/* 
*/