Sql Server中子查询删除

应用:从B表中删除在A表中的记录。

1、普遍写法(支持多种数据库平台)

DELETE FROM B_Table WHERE B_ID IN (SELECT B_ID FROM A_Table)

2、Sql server特有写法(不知道从哪个版本开始的,本人测试环境2008 R2)

DELETE FROM B_Table FROM B_Table b INNER JOIN A_Table a ON b.ID=a.ID  (注意是连着两个from)

 

Sql server 2008 R2中 帮助文档中的实例是错误的,看下面的例子:

-- Transact-SQL extension
USE AdventureWorks2008R2;
GO
DELETE FROM Sales.SalesPersonQuotaHistory
SELECT * FROM Sales.SalesPersonQuotaHistory AS spqh
    INNER JOIN Sales.SalesPerson AS sp
    ON spqh.BusinessEntityID = sp.BusinessEntityID WHERE sp.SalesYTD > 2500000.00;
GO
红色的Select * 是不应该有的。

posted @ 2013-05-16 12:50  kylin.chen  阅读(500)  评论(0编辑  收藏  举报