我想编写一个类似下面的存储过程
allInterestingKeys = SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date)
DELETE MyTable01 WHERE MyKey IN allInterestingKeys
DELETE MyTable02 WHERE MyKey IN allInterestingKeys
...
DELETE MyTable10 WHERE MyKey IN allInterestingKeys
理想情况下,我只想运行SELECT MyKey FROM MyTable WHERE ...
一次,以使程序比
DELETE MyTable01 WHERE MyKey IN (SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date))
DELETE MyTable02 WHERE MyKey IN (SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date))
...
DELETE MyTable10 WHERE MyKey IN (SELECT MyKey FROM MyTable WHERE CreatedDate < CAST('2013-01-01' AS date))
编码它的最佳方法是什么?感谢。
答案 0 :(得分:2)
使用临时表! SELECT INTO
是最简单的,但您也可以提前设计表格并INSERT INTO
临时表
SELECT MyKey
INTO #allInterestingKeys
FROM MyTable
WHERE CreatedDate < CAST('2013-01-01' AS date)
然后从临时表中选择列表
DELETE MyTable01 WHERE MyKey IN (SELECT MyKey FROM #allInterestingKeys)
或INNER JOIN
到临时表中删除
DELETE t
FROM MyTable01 t
INNER JOIN #allInterestingKeys k
ON t.MyKey = k.MyKey