如何删除数据库中重复字段且特定列为空的行?
如何删除数据库重复字段且特定列为空的行
在关系型数据库中,当需要删除具有特定字段重复但同时另一列值为 null 的行时,可以使用 sql 查询。
考虑以下场景:
数据的datas表中存储了以下信息:
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
目标是删除credit、company、name、phone和id字段相同但pid为空的行,而保留pid不为空的行。
解决方案:
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
);
此查询使用以下步骤:
- 从datas表中选择所有pid为空的行。
- 使用in子查询从pid不为空的行中选择credit、company、name、phone和id字段的组合。
- 删除与子查询中选择的组合匹配的pid为空的行。
执行此查询将删除以下行:
99284
传媒有限公司
李四
9894
703e16
null
保留以下行:
99284
传媒有限公司
张三
3930
21d4f7
6ec897
99284
传媒有限公司
王五
1895
2c6dcd
21d4f7
99284
传媒有限公司
王五
1895
a8c70b
21d4f7
99284
传媒有限公司
李四
9894
33db09
21d4f7
99284
传媒有限公司
李四
9894
0faa54
21d4f7
以上就是如何删除数据库中重复字段且特定列为空的行?的详细内容,更多请关注昆居客【www.kunjuke.com】。