gpt4 book ai didi

sql-server - 对每行的 SQL 数据进行重复数据删除

转载 作者:行者123 更新时间:2023-12-04 05:03:45 28 4
gpt4 key购买 nike

earlier question ,我正在尝试整理包含电话号码的 SQL 表。我需要删除每行重复的数字 - 而不是整个表格。例如,我的表看起来像:

 | CustomerID | Tel1     | Tel2      | Tel3     | Tel4      | Tel5      | Tel6     |
| Cust001 | 01222222 | 012333333 | 07111111 | 07222222 | 01222222 | NULL |
| Cust002 | 07444444 | 07555555 | 015333333| 07555555 | NULL | NULL |
| Cust003 | 01222222 | 017777777 | 07888888 | 017777777 | 016666666 | 01222222 |

我想删除在同一行中出现两次或更多次的任何数字......所以表格最终看起来像:
 | CustomerID | Tel1     | Tel2      | Tel3     | Tel4     | Tel5      | Tel6   |
| Cust001 | 01222222 | 012333333 | 07111111 | 07222222 | NULL | NULL |
| Cust002 | 07444444 | 015333333 | 07555555 | NULL | NULL | NULL |
| Cust003 | 01222222 | 017777777 | 07888888 | 016666666| 013333 | NULL |

电话号码的顺序并不重要,只要号码在第一列中并且任何 NULL 都在“右边”。

SQLFiddle在这里 - 谁能建议如何有效地删除每行的重复值?

最佳答案

您可以尝试直截了当的方法,特别是如果它是一次性的,或者您偶尔清理一下。

UPDATE phonenumbers SET tel6 = NULL
WHERE tel6 IN(tel5,tel4, tel3, tel2, tel1);
UPDATE phonenumbers SET tel5 = NULL
WHERE tel5 IN(tel4, tel3, tel2, tel1);
UPDATE phonenumbers SET tel4 = NULL
WHERE tel4 IN(tel3, tel2, tel1);
UPDATE phonenumbers SET tel3 = NULL
WHERE tel3 IN(tel2, tel1);
UPDATE phonenumbers SET tel2 = NULL
WHERE tel2 = tel1;

SQLFiddle

尽管如此,我完全同意@Mahmoud Gamal 和@steoleary 的观点,即如果您可以更改表的 DDL,则应该这样做。

关于sql-server - 对每行的 SQL 数据进行重复数据删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15786699/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com