数据库中如何删除特定字段相同但某列值为空的行(保留该字段非空的行)?

作者站长头像
站长
· 阅读数 7

数据库的datas表中有类似以下数据:

creditcompanynamephoneidpid
99284传媒有限公司张三393021d4f7NULL
99284传媒有限公司张三393021d4f76ec897
99284传媒有限公司王五18952c6dcd21d4f7
99284传媒有限公司王五1895a8c70b21d4f7
99284传媒有限公司李四989433db0921d4f7
99284传媒有限公司李四9894703e16NULL
99284传媒有限公司李四98940faa5421d4f7

上表中,name张三的行有两条,除了pid不同(一条为NULL,一条不为NULL),其他字段都是重复的,如何将creditcompanynamephoneid字段相同的情况下,删除pid为空的记录,只保留pid不为空的记录?表中除了 creditcompanynamephoneidpid等字段外,还有其他字段,其他字段是否重复不纳入删除条件。

回复
1个回答
avatar
test
2024-06-30
DELETE FROM datas 
WHERE pid IS NULL AND (credit, company, name, phone, id, rootid) IN (
    SELECT credit, company, name, phone, id, rootid 
    FROM datas 
    WHERE pid IS NOT NULL
);
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容