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

数据库的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.9k
1 个回答
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
);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题