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 * 是不应该有的。