gpt4 book ai didi

sql - 如何在 Oracle SQL 上使用内部联接删除记录?

转载 作者:行者123 更新时间:2023-12-01 13:56:08 25 4
gpt4 key购买 nike

我有3张 table

表一:

| id_A | Data ... |

表乙:
| id_B | Data ... |

加入 A_B
| id_A | id_B |

这些表是我的情况的一个例子。好吧,我正在尝试根据许多条件从 Join A_B 中删除许多记录,例如 A 的名称是 X,B 的名称是 Y。

当我执行 SELECT 时,它可以工作,但 DELETE 则不行。

这是我的要求:
DELETE A_B FROM A 
INNER JOIN A_B
ON (A.ID = A_B.A_ID)
INNER JOIN B
ON (B.ID = A_B.B_ID)
WHERE B.NAME IN ('X', 'Y')
AND A.NAME = 'Z';

它说 :
Erreur SQL : ORA-00933: SQL command not properly ended
00933. 00000 - "SQL command not properly ended"

最佳答案

执行删除时只允许一个 From 表。
尝试

DELETE FROM A_B 
WHERE EXISTS (SELECT 1 FROM A
INNER JOIN B ON (B.ID = A_B.B_ID)
WHERE A.ID = A_B.A_ID
AND B.NAME IN ('X', 'Y')
AND A.NAME = 'Z');

引用 here

关于sql - 如何在 Oracle SQL 上使用内部联接删除记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41285390/

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