gpt4 book ai didi

sql - 如何使用 CTE 和 INNER JOIN 删除行?

转载 作者:行者123 更新时间:2023-12-04 14:43:51 24 4
gpt4 key购买 nike

如何使用 CTE 和 INNER JOIN 从表中删除数据?这是有效的语法,所以应该这样工作:

with my_cte as (
select distinct var1, var2
from table_a
)
delete
from table_b b inner join my_cte
on var1 = b.datecol and var2 = b.mycol;

最佳答案

在 Oracle 中既不是 CTE 也不是 INNER JOINDELETE 有效命令。这同样适用于 INSERTUPDATE命令。

通常最好的选择是使用 DELETE ... WHERE ... IN :

DELETE FROM table_b
WHERE (datecol, mycol) IN (
SELECT DISTINCT var1, var2 FROM table_a)

您还可以从子查询的结果中删除。这在 docs 中有介绍(虽然很少) .

附录 另请参阅@Gerrat 的回答,其中显示了如何在 DELETE … WHERE … IN 中使用 CTE询问。在某些情况下,这种方法比我的答案更有帮助。

关于sql - 如何使用 CTE 和 INNER JOIN 删除行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16668806/

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