gpt4 book ai didi

从多个表中删除带有外键的 SQL

转载 作者:行者123 更新时间:2023-12-04 23:29:28 25 4
gpt4 key购买 nike

我有 2 个由外键连接的表,字段 UploadID .

我想从数据库中删除一些行。我尝试了几个不起作用的 SQL 查询。

现在我有了这个我认为应该可以解决问题的方法,但出现错误:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ','.


DELETE 
a, b FROM [Uploads] as a,
[OrderLines] as b
WHERE [Uploads].UploadID < 53436;

有什么想法吗?

最佳答案

在 SQL Server 中一次只能从 1 个表中删除

但是,如果您使用 cascade delete 设置了 key 那么如果您从父表中删除它们,那么它们将自动从子表中删除

否则您需要运行两个删除语句,第一个用于子行,然后一个用于父行

像这样的事情......但是我很困惑.. 你的 JOIN 条件在哪里?

DELETE 
b FROM [Uploads] as a,
[OrderLines] as b
WHERE [Uploads].UploadID < 53436;

DELETE
[Uploads]
WHERE [Uploads].UploadID < 53436;

我更喜欢使用新样式的 ANSI JOIN..like 如下
DELETE 
b FROM [Uploads] as a,
JOIN [OrderLines] as b on A.SomeColumns = b.SomeColumn
WHERE a.UploadID < 53436;

你几乎有一个笛卡尔积(交叉连接)

关于从多个表中删除带有外键的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7255803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com