SQL 添加序列号

qq_15884219 2015-10-17 05:30:12
SQL 如何在一个SQL语句中添加一个序号,从1开始,比如

Select FieldName From TableName,得到如下数据

name time
alice 2015-10-3

alice 2015-10-3

grace 2015-10-3

mike 2015-10-5

怎样写SQL语句可以得到如下结果:

ID name time
1 alice 2015-10-3

2 alice 2015-10-3

3 grace 2015-10-3

4 mike 2015-10-5
...全文
491 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
薛定谔的DBA 2015-10-19
  • 打赏
  • 举报
回复
安装 id 排序:
Select   row_number() over(order by name) as id,    name, [time]
From tb Order by id
道玄希言 2015-10-19
  • 打赏
  • 举报
回复

; with tb as 
(
    select  name, event_date from 表 group by name,  event_date
)
Select
    row_number() over(order by event_date) as id,
    name, event_date
From tb

或者
; with tb as 
(
Select
    row_number() over(partition by  name,  event_date  order by event_date) as id,
    name, event_date
From 表
)
select  id,  name,  event_date  from tb where id =1
qq_17482963 2015-10-19
  • 打赏
  • 举报
回复
引用 7 楼 qq_15884219 的回复:
认真看了,不知道为什么出现这样结果?
你分组了吧 如果你是select所有结果出来的 那怎么那些重复行没select出来
qq_15884219 2015-10-19
  • 打赏
  • 举报
回复
原始值 time 和 name有出现重复项
qq_15884219 2015-10-19
  • 打赏
  • 举报
回复
认真看了,不知道为什么出现这样结果?
frankl123 2015-10-19
  • 打赏
  • 举报
回复
1#就完美解决了,row_number()是顺序的。
qq_17482963 2015-10-19
  • 打赏
  • 举报
回复
引用 4 楼 qq_15884219 的回复:
id 列show 出来的是 id name time 1 alice 2015-10-3 3 grace 2015-10-3 4 mike 2015-10-5 我想显示所有的结果,即id 从1 升序到最后一个值 ID name time 1 alice 2015-10-3 2 alice 2015-10-3 3 grace 2015-10-3 4 mike 2015-10-5 .......
用row_number()不会跳跃排序的吧 rank()才是跳跃排序 楼主认真看了吗
qq_15884219 2015-10-19
  • 打赏
  • 举报
回复
id 列show 出来的是 id name time 1 alice 2015-10-3 3 grace 2015-10-3 4 mike 2015-10-5 我想显示所有的结果,即id 从1 升序到最后一个值 ID name time 1 alice 2015-10-3 2 alice 2015-10-3 3 grace 2015-10-3 4 mike 2015-10-5 .......
卖水果的net 版主 2015-10-19
  • 打赏
  • 举报
回复
引用 2 楼 qq_15884219 的回复:
感谢回复! 由于name 和time 有重复行,用row_number()over(order by name)会将name 出现次数进行累加,我需要全部显示出来,应如何解决?
累加是什么意思 ? 你想每出现一个 name ,都要从 1开始吗 ? 可以加一个 partition by 选项

-- 借用 1# 代码
row_number()over(partition by name order by time)
qq_15884219 2015-10-19
  • 打赏
  • 举报
回复
感谢回复! 由于name 和time 有重复行,用row_number()over(order by name)会将name 出现次数进行累加,我需要全部显示出来,应如何解决?
道玄希言 2015-10-17
  • 打赏
  • 举报
回复

Select
    row_number() over(order by name) as id,
    name, [time]
From tb

34,873

社区成员

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

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