数据库中如何删除特定字段相同但某列值为空的行(保留该字段非空的行)?
数据库的datas表中有类似以下数据:
credit | company | name | phone | id | pid |
---|---|---|---|---|---|
99284 | 传媒有限公司 | 张三 | 3930 | 21d4f7 | NULL |
99284 | 传媒有限公司 | 张三 | 3930 | 21d4f7 | 6ec897 |
99284 | 传媒有限公司 | 王五 | 1895 | 2c6dcd | 21d4f7 |
99284 | 传媒有限公司 | 王五 | 1895 | a8c70b | 21d4f7 |
99284 | 传媒有限公司 | 李四 | 9894 | 33db09 | 21d4f7 |
99284 | 传媒有限公司 | 李四 | 9894 | 703e16 | NULL |
99284 | 传媒有限公司 | 李四 | 9894 | 0faa54 | 21d4f7 |
上表中,name
为张三
的行有两条,除了pid
不同(一条为NULL
,一条不为NULL
),其他字段都是重复的,如何将credit
,company
,name
,phone
,id
字段相同的情况下,删除pid
为空的记录,只保留pid
不为空的记录?表中除了 credit
,company
,name
,phone
,id
,pid
等字段外,还有其他字段,其他字段是否重复不纳入删除条件。
回复
1个回答
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
);
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容