postgresql – 如何使用外部连接删除行

前端之家收集整理的这篇文章主要介绍了postgresql – 如何使用外部连接删除行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用LEFT JOIN从Postgresql表中删除记录有问题.

我想删除以下查询中的行:

SELECT * FROM url 
LEFT JOIN link_type ON url.link_type = link_type.id 
WHERE link_type.id IS NULL

为了做到这一点,这里是我做的:

DELETE FROM url
 USING link_type
 WHERE url.link_type = link_type.id  AND link_type.id IS NULL

查询工作,但不删除任何东西,虽然这正是在doc:http://www.postgresql.org/docs/current/static/sql-delete.html中解释的.

我的问题是由于查询中的IS NULL还是我错过了什么?

好工作,太阳小的建议:使用EXISTS / NOT EXISTS时,不需要SELECT *.一个常见的约定( docs)就是像这样写一个SELECT 1:
DELETE FROM url WHERE NOT EXISTS (
  SELECT 1 FROM link_type WHERE url.link_type = link_type.id 
);

功能上,两种方式都有效.

猜你在找的Postgre SQL相关文章