目标:使用查询 - 删除所有没有资产的客户
我有2张桌子。我想删除我的count = 0的所有行:
我的情况
if (SELECT COUNT(*) FROM Asset_Table WHERE Customer_ID='myString' ==0){
Delete row from Account_table
}
Accounts_Table:
CustomerID | Customer_Name | Onwner
-------------------------------------------------------------
123 | Jake | someowner1
124 | Ralph | someowner2
... | .... | ....
Asset_Table:
AssetINDEX | Customer_ID | Serial_ID |
-------------------------------------------------
5564 | 123 | xyz
5565 | 128 | xyz1
.... | ... | xyz2
预期结果
Accounts_Table:
CustomerID | Customer_Name | Onwner
-------------------------------------------------------------
123 | Jake | someowner1
... | .... | ....
Asset_Table:
AssetINDEX | Customer_ID | Serial_ID |
-------------------------------------------------
5564 | 123 | xyz
.... | ... | xyz2
答案 0 :(得分:1)
删除所有没有资产的客户
您可以使用exists
来验证 Asset_Table 中不存在的行:
delete from Account_table AT
where not exists (select AssetINDEX from Asset_Table
where Customer_ID = AT.CustomerID)
答案 1 :(得分:1)
以下查询应该有效;
delete from Accounts_Table where CustomerID not in (select Customer_ID from Asset_Table )
答案 2 :(得分:1)
它出现在"结果"你在问题中提出了你希望双向清理数据的方法。这样,剩下的唯一记录在两个表中都有引用。为此,您需要两个语句,并且可以使用EXISTS子句。
DELETE FROM Accounts_Table
WHERE NOT EXISTS (SELECT CustomerID FROM Asset_Table WHERE Accounts_Table.CustomerID
= Asset_Table.Customer_ID)
DELETE FROM Asset_Table
WHERE NOT EXISTS (SELECT AssetINDEX FROM Accounts_Table where Asset_Table.Customer_ID
= Accounts_Table.CustomerID)
答案 3 :(得分:0)
DELETE C FROM
Account_table AS C
WHERE
NOT EXISTS (
SELECT
'the customer does not have any asset'
FROM
Asset_Table AS A
WHERE
A.Customer_ID = C.Customer_ID)