sql - 通过组合键从 select 中删除记录

标签 sql postgresql sql-delete

我已经能够提出一个查询来选择我想要删除的那些记录,但现在我无法将其转换为删除查询。问题是复合键描述了选定的行,因此正常的从表中删除键(选择键...)将不起作用(至少对于 Postgres 不起作用)。

有什么方法可以让它发挥作用吗?

这是选择查询:

SELECT t1.*, link.*, t2.* FROM tbl as t1
JOIN link on link.a = t1.link_id
JOIN tbl as t2
ON link.b = t2.link_id
WHERE t1.data = t2.data and 
t1.some_id = q2.some_id

tbl 可以通过 some_idlink_id 来识别(在某些情况下可能是我没有提到的第三个标识符)。

最佳答案

啊...我想我已经回答了(应该多考虑一下)。

DELETE FROM tbl as t1 
WHERE EXISTS (
  SELECT 1 FROM link
  JOIN tbl as t2
    ON link.b = t2.link_id
  WHERE 
      link.a = t1.link_id 
  AND t1.data = t2.data 
  AND t1.some_id = t2.some_id
)

关于sql - 通过组合键从 select 中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33470592/

相关文章:

sql - 如何使用 DataGrip 在本地创建 postgreSQL 数据库

mysql - 删除匹配行的更快方法?

php - 删除多个字段失败

tsql - T-SQL 删除插入的记录

MySQL - 组中的条件选择

sql - 使用 SQL 根据特定列中相似单元格的数量对表的行重新排序

sql - 如何在 PostgreSql 中插入一条记录并返回新的 id 作为输出参数

php - 同时使用 PDO 准备好的语句和 filter_var?

SQL - 使用联接过滤大型表 - 最佳实践

java - 使用 Java 从 PostgreSQL 元数据中检索字段大小