我正在使用一些相当敏感的数据,所以我想绝对确定我做得很好。
我正在尝试删除表中与另一个表
关联的行关联表的唯一方法是通过另外两个表加入......
这是确切的查询:
DELETE tt.Transaction_Amount, tt.Transaction_ID
FROM ItemTracker_dbo.Transaction_Type tt
JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID
JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID
JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID
WHERE i.Client_ID = 1
如您所见,它并不漂亮。
我通过MySQL查询浏览器得到了一个奇怪的错误......
MULTI DELETE中的未知表'Transaction_Amount'
我试过阅读mysql手册,看起来这应该对我有用......任何人都有任何想法吗?
答案 0 :(得分:23)
您需要删除tt
中的行,而不是单个列:
DELETE tt
FROM ItemTracker_dbo.Transaction_Type tt
JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID
JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID
JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID
WHERE i.Client_ID = 1
答案 1 :(得分:1)
语法不正确 - DELETE
和FROM
之间的don't reference columns。使用:
DELETE FROM ItemTracker_dbo.Transaction_Type tt
JOIN ItemTracker_dbo.Transaction t ON tt.Transaction_ID = t.Transaction_ID
JOIN ItemTracker_dbo.Purchase p ON p.Transaction_ID = tt.Transaction_ID
JOIN ItemTracker_dbo.Item i ON i.Item_ID = p.Item_ID
WHERE i.Client_ID = 1
为了确保您删除了正确的内容,我同意wallyk您应该检查SELECT语句的输出,即返回的内容是您之前要删除的内容。否则,在事务中执行删除操作,以便在需要时将其回滚。
答案 2 :(得分:0)
您应该首先将其组合为查询以返回感兴趣的行。一旦完成调试,就将其转换为删除。
答案 3 :(得分:0)
选中查询,然后在对关键数据执行删除查询之前获取该表的备份。如果出现任何问题就这么简单,那么你至少可以备份。