怎么样写一个能够提取表中所有人的身份证号的SQL

Colin-Han 2002-03-28 06:20:39
如果一个表如下:
name varchar(10)
id char(10)
sex char(2)
...

我现在随机生成了很多的纪录,但是里面有些name相同的纪录,我希望能够将所有name相同的纪录的id号修改为一样的,我希望能够改为第一个出现的ID号,怎么写?
...全文
260 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Colin-Han 2002-04-17
  • 打赏
  • 举报
回复
因为身份证号我使用了随机数生成,如果取最小值或最大值,将会都变成很小的数或很大的数。所以我不希望使用那两个函数。大家积极讨论啊!

我想,如果使用游标能够实现,但是,那样会很复杂而且慢,(数据库里可有1M条纪录啊!)
Colin-Han 2002-04-17
  • 打赏
  • 举报
回复
谢谢 tangshanbin12(小金鱼)
select top 1 name , id from table group by name 就是错误的
列 'table.id' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
tangshanbin12 2002-04-12
  • 打赏
  • 举报
回复
对不起,刚才哪一名有问题
tangshanbin12 2002-04-12
  • 打赏
  • 举报
回复
update tablename set id=b.id from table a,(select top 1 name,id as id from table order by id ,group by name) as b
where a.name=b.name

流星尔 2002-04-12
  • 打赏
  • 举报
回复
因为那样会是数据看起来都差不多是什么意思。

为什么会使数据看起来都差不多?你的意思不是就是把相同name的第一个id取出来,并把相同name的都修改为这个id吗?
jlandzpa 2002-04-11
  • 打赏
  • 举报
回复
何必一定要用一个sql实现,写个过程吧.
Colin-Han 2002-03-29
  • 打赏
  • 举报
回复
我不希望使用min函数,因为那样会使数据看起来都差不多!有没有办法获得第一个出现的ID?
fallstone 2002-03-29
  • 打赏
  • 举报
回复
第一位回答的人解决办法蛮不错。呵呵。关键还要考虑一个删除重复问题。否则ID是作为主键的,是不能SET的吧?
filix 2002-03-28
  • 打赏
  • 举报
回复
这样好像要用两张表吧?一张表里面出来的查询可以作为数据源的嘛?
warning 2002-03-28
  • 打赏
  • 举报
回复
update tablename set id=b.id from table a,(select name,min(id) as id from table group by name) as b
where a.name=b.name

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧