加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 16:32:33 所属栏目:百科 来源:网络整理
导读:使用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.
使用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 
);

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读