如果表2中存在数据(id)但表2为空,如何删除表1中的数据?

时间:2019-06-27 09:45:13

标签: sql postgresql

我的Postgresql数据库有此sql:

  DELETE FROM table1
  USING table2
  WHERE table1.id = table2.table2_id
  AND table1.id = $1

一个问题是,当table2中没有条件为table1.id = table2.table2_id的数据时,它将不会从任何表中删除任何内容。

我想让它始终从table1中删除数据,而不管table1.id = table2.table2_id中是否有table2的数据

我该如何扭曲脚本?

1 个答案:

答案 0 :(得分:0)

   DELETE FROM table1
   USING table2
   WHERE table1.id = coalesce(table2.table2_id,table1.id)
   AND table1.id = $1

我从未使用过PostgreSQL,但是如果table2没有引用,则必须添加一个null子句,这种方式可以合并...我认为。