微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 
);

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

原文地址:https://www.jb51.cc/postgresql/191727.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐