gpt4 book ai didi

sql - 从没有主键的表中删除记录

转载 作者:行者123 更新时间:2023-12-04 21:06:01 25 4
gpt4 key购买 nike

我需要从数据库表中删除一些特定的记录,但表本身没有主键。所以条件取决于其他表。那么这样做的正确方法是什么?

  delete from table_1 
where exists
(select distinct tb.*
from table_1 tb, table_2 tb_2, table_3 tb_3
where tb1.col = tb2.col
and tb3.col = tb2.col
and tb3.col_2= 10)

这是正确的方法吗?假设 table_1 有 4 列,前两列应该是要删除的条件。

最佳答案

如果您的查询的选择版本返回您要删除的结果,那么您很好。不过有几件事..

使用符合 ANSI 的显式连接语法,而不是逗号分隔的隐式语法(这种语法早已弃用)。无论如何,显式语法看起来更好并且更容易阅读。

关联您的 EXISTS回到主 table 。而且你不需要一个不同的,无论有 1 个匹配行还是 100 亿行,它都会返回正数。

SELECT *
FROM table_1 tb_1
WHERE EXISTS (SELECT *
FROM table_2 tb_2
JOIN table_3 tb_3 ON tb_2.col = tb_3.col
WHERE tb_1.col = tb_2.col
AND tb_3.col_2 = 10)

关于sql - 从没有主键的表中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45740150/

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