database - 删除左连接 postgres

标签 database postgresql

问题:我有以下两个表。我想删除临时数据中不存在的旧数据行。主键是 id 和场景。我在 postgres 中运行了以下删除左连接,不幸的是没有成功(它删除了整个表):

DELETE
FROM old_data
USING old_data as a
LEFT OUTER JOIN temp_data b ON (b.id = a.id AND b.scenario=a.scenario) 
      WHERE (b.scenario IS NULL AND a.scenario = 2)

有什么想法可以调整查询吗?

## Old data

enter image description here

Temp data

enter image description here

最佳答案

您不需要左连接:

DELETE FROM old_data od
where not exists (select * 
                  from temp_data td
                  where td.id = od.id 
                    AND td.scenario = od.scenario) ;

关于database - 删除左连接 postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63506222/

相关文章:

postgresql - 只能将pgadmin连接到端口5432上的postgres docker容器,但不能连接任何其他端口?

database - Oracle 是否使用窃取/非强制方法?

python - 从 Django sqlite3 数据库中删除对象,减少数据库大小

database - 如何删除枪支数据库中的数据?

database - VBA 中的记录集是什么? ... 它的作用是什么?

python - 如何使用 SQLAlchemy ORM 指定 PostgreSQL DateStyle 属性

postgresql - 传递一个函数名作为参数

postgresql - 无法从 db.QueryRow() 推断出错误

mysql - 将 NULL 插入 MySQL 时间戳

PostgreSQL copy命令生成主键id