我想删除以下查询返回的所有记录:
SELECT *
FROM [Customer] C
INNER JOIN [BillingStatus] BS
ON BS.CustomerID = C.CustomerID
INNER JOIN [TCDetails] TC
ON TC.CustomerID = BS.CustomerID
INNER JOIN [BillingDetails] BD
ON BS.CustomerID = BD.CustomerID
INNER JOIN [AgencyDetails] AD
ON BD.CustomerID = AD.CustomerID
INNER JOIN [CustomerDetails] CD
ON CD.CustomerID = AD.CustomerID
WHERE C.CYC = 27
您想要从所有表中删除,因此首先向某个临时表声明客户ID可能会更简单:
SELECT CustomerID
INTO #TempCustomer
FROM Customer
WHERE CYC = 27
然后,您需要从以下每个表中删除:
DELETE FROM Customer WHERE CustomerID IN (SELECT CustomerID FROM #TempCustomer)
DELETE FROM BillingStatus WHERE CustomerID IN (SELECT CustomerID FROM #TempCustomer)
DELETE FROM TCDetails WHERE CustomerID IN (SELECT CustomerID FROM #TempCustomer)
DELETE FROM BillingDetails WHERE CustomerID IN (SELECT CustomerID FROM #TempCustomer)
DELETE FROM AgencyDetails WHERE CustomerID IN (SELECT CustomerID FROM #TempCustomer)
DELETE FROM CustomerDetails WHERE CustomerID IN (SELECT CustomerID FROM #TempCustomer)
最后,为了在您之后进行清理,您还应该删除您创建的临时表:
DROP TABLE #TempCustomer
从您的注释中,您希望删除Customer
及其在其他表中的所有关系,因此,首先将外键上的Cascade Delete
从Customer
设置为其他表,然后使用此查询的Delete
客户将删除所有其他表
DELETE FROM [Customer] WHERE CYC = 27