首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每行删除SQL数据

每行删除SQL数据
EN

Stack Overflow用户
提问于 2013-04-03 11:56:39
回答 1查看 118关注 0票数 2

接下来是一个先前的问题,我正在整理一个包含电话号码的SQL表。我需要删除每一行重复的数字-而不是整个表。例如,我的表看起来是:

代码语言:javascript
复制
 | 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 |

我想删除任何出现在同一排的两倍或更多的数字.所以这张桌子最后看起来会是:

代码语言:javascript
复制
 | 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   |

电话号码的顺序并不重要,只要号码在第一列中,任何NULLS都是“正确的”。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-03 12:14:59

你可以尝试直截了当的方法,特别是如果这是一次性的事情,或者偶尔做你的清理。

代码语言:javascript
复制
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,你应该这样做。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15786699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档