34,594
社区成员
发帖
与我相关
我的任务
分享
delete from A where abPlan not in(select abPlan from B)
create table 表A
(
id int identity(1,1) primary key,
operatedate varchar(20),
abPlan varchar(10)
)
go
create table 表B
(
id int identity(1,1) primary key,
abPlan varchar(10)
)
go
insert into 表A select '2008-12-1','050020'
union select '2008-10-2','050200'
union select '2008-10-3','050201'
go
insert into 表B select '050020'
union select '050201'
select * from 表A
select * from 表B
delete from 表A where abPlan not in (select abPlan from 表B)
delete from A where abPlan not in(select abPlan from B)
DELETE
FROM 表A
WHERE abPlan not in (
SELECT abPlan
FROM 表B)
---------------------------------
-- Author: liangCK 小梁
---------------------------------
--> 生成测试数据: @表A
DECLARE @表A TABLE (id INT,operatedate DATETIME,abPlan VARCHAR(6))
INSERT INTO @表A
SELECT 1,'2008-12-1','050020' UNION ALL
SELECT 2,'2008-10-2','050200' UNION ALL
SELECT 3,'2008-10-3','050201'
--> 生成测试数据: @表B
DECLARE @表B TABLE (id INT,abPlan VARCHAR(6))
INSERT INTO @表B
SELECT 1,'050020' UNION ALL
SELECT 2,'050201'
--SQL查询如下:
DELETE A
FROM @表A AS A
WHERE NOT EXISTS(
SELECT *
FROM @表B
WHERE abPlan=A.abPlan
)
SELECT *
FROM @表A
/*
id operatedate abPlan
----------- ----------------------- ------
1 2008-12-01 00:00:00.000 050020
3 2008-10-03 00:00:00.000 050201
(2 行受影响)
*/
DELETE A
FROM 表A AS A
WHERE NOT EXISTS(
SELECT *
FROM 表B
WHERE abPlan=A.abPlan
)