postgreSQL:通过匹配行数据删除
我有一个SELECT语句的结果,我想使用该语句从具有相同数据的不同表中删除匹配行。我没有SELECT中的具体细节,只返回了行 例如,如果我有桌子postgreSQL:通过匹配行数据删除,sql,postgresql,join,sql-delete,Sql,Postgresql,Join,Sql Delete,我有一个SELECT语句的结果,我想使用该语句从具有相同数据的不同表中删除匹配行。我没有SELECT中的具体细节,只返回了行 例如,如果我有桌子 table_1 name | value -------------- Bob | 5 Ben | 14 Bev | 8 table_2 name | value -------------- Bob | 5 Bill | 2 Biff | 4 我得到了从第一个表中选择的结果,返回Bob的行,我如何使用它从第二个表中删除B
table_1
name | value
--------------
Bob | 5
Ben | 14
Bev | 8
table_2
name | value
--------------
Bob | 5
Bill | 2
Biff | 4
我得到了从第一个表中选择的结果,返回Bob的行,我如何使用它从第二个表中删除Bob
编辑
为了更清楚地说明我在做什么,我有一个脚本,它正在遍历几对备份/活动表,并查找新的和更新的行,这就是我得到的选择部分—它是一个更改日志。现在,我需要删除一些新行,但我需要处理的只是更改日志中的原始数据和表名。对于插入,这不是问题:
INSERT INTO table_name <row data here> -- Don't need column names
我希望DELETE能够通过匹配与EXCEPT子句工作方式类似的原始数据来实现类似的无模式删除功能。我认为您正在寻找以下内容:
DELETE FROM table_2 WHERE (name, value) IN (
SELECT name, value FROM table_1
)
这将搜索并删除表_2中名称和值至少与表_1中的一行匹配的行
如果有一个查询提供了要删除的名称、值元组列表,您可以用它来替换子查询。您想使用原始SQL查询吗?原始SQL非常理想,但我愿意接受其他解决方案。是否可以将WHERE名称、值部分通配符为WHERE*?我的脚本无法访问该表internals@user2859458当前位置我不确定你的意思,但是。。。SQL无效。@user2859458:您所说的不容易访问表内部是什么意思。如果您可以选择或在本例中删除,则可以访问该表,除非存在列级访问要求,即行级安全性。感谢您的帮助。我正在处理的脚本可以针对多个表运行,并且编写为模式无关的。对于inserts,这不是问题:INSERT INTO table_name