首页 新闻 会员 周边

T-SQL存储过程解决重复数据的查询与修改

0
悬赏园豆:40 [已关闭问题] 关闭于 2011-08-11 17:01

要求:

1.查出用户信息表(t_users)中的所有重复记录(姓名、身份证号、手机号、座机号任一项重复都视为重复)。

2.结合用户信息表(t_users)和用户状态表(t_state),把重复记录在t_state表中对应的信息整合到每组重复记录中uid最小的账号下,并把此最小账号对应用户状态(state)改为T,每组重复中其它账号对应的用户状态(state)改为F(即:把t_state表中每组重复记录的uid都改为最小的uid,而对应的状态前者为T,后者为F)。

注意:用T-SQL存储过程来完成。

用户信息表(t_users)

用户账号(uid)

用户姓名(name)

身份证号(card_num)

手机号(mobile)

座机号(tel)

1125

方佳

41128219901121454X

13638921134

 

1126

刘明

420030198910223517

18272314567

0398-6817320

1127

 

310109198809232846

15233775412

 

1128

艾丽

310105199103212249

13178324563

 

1129

萧筱

330117199204152267

   

1130

郑志峰

N203248319

   

1131

洪欣远

332625198307113913

   

1132

萧筱

 

13838324211

 

1133

 

41128219901121454X

   

1134

陆羽

*

15864657279

 

1135

彭哲

420

   

1136

 

*

13947233828

0768-6688728

1137

吴雪

 

15233775412

027-82313013

1138

 

310105199103212249

   

1139

欧阳冰玉

Null

13165467801

 

……

……

……

……

……

 

 

 

 

 

 

 

 

 

 

 

用户状态表(t_state)

状态标记号(sid)

用户账号(uid)

用户状态(state)

用户评论(remark)

3340

1125

T

今天的心情不错

3341

1125

T

你的行头真帅

3342

1125

F

价格贵啦点吧

3343

1129

F

看看再说吧

3344

1129

F

打酱油的走过

3345

1129

T

还好

3346

1129

F

3347

1130

T

柳叶弯弯,月儿新

3348

1130

T

不离不弃,爱里相依

3349

1130

T

往日不谏,来日可追

3350

1130

T

算了吧

3351

1133

F

愿未了

3352

1133

F

等待中

3353

1140

T

路过

3354

1140

F

无语

……

……

……

……

天冰晗的主页 天冰晗 | 初学一级 | 园豆:200
提问于:2011-07-21 14:27
< >
分享
所有回答(3)
0

不懂楼主干嘛要这样做

梅莲芳 | 园豆:669 (小虾三级) | 2011-07-22 12:35
0

这样会有问题。你删除了t_users表数据,t_state表里就出项脏数据。

TFS | 园豆:89 (初学一级) | 2011-07-22 17:01
不是删除啊,删除都好办啦。是把重复数据在状态表中的对一个信息集结到最小账号下,即把每组重复数据中的uid改为最小的那个,而后面信息依然对应存在。状态的话,原最小uid对应的为T,而被改为最小uid的对应为F。
支持(0) 反对(0) 天冰晗 | 园豆:200 (初学一级) | 2011-07-22 17:15
0

你那个用户表中“姓名“会不能视为重复

杯具程序员 | 园豆:1718 (小虾三级) | 2011-07-27 11:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册