为select语句的结果表中的每一行分配一个唯一计数

时间:2016-02-13 09:11:00

标签: sql sql-server

假设我们有一个简单的数据库,它具有以下模式:文章(Id,Body,AuthorId)作者(Id,名称)。假设我们想要开发一个页面,每个作者只能查看自己的帖子。只有一个要求:

  • 当作者想要查看他的帖子时,SQL查询应该允许他查看每个项目的计数器,从1开始。

示例 这是一个简单的设置: (1,“嗨”,1),(2,“那里”,1),(3,“测试”,2),(4,“foo”,1)。

通过执行某种SQL语句:`select count,body where authorid = 1; 我们希望得到: (1,“你好”,1),(2,“那里”,1),(3,“foo”,1)。

问题 正如您所看到的,建议的陈述不起作用,因为 count 还没有意义。我的问题是,有没有办法为每个项目分配一个本地计数来产生上面的结果?

1 个答案:

答案 0 :(得分:3)

ROW_NUMBER()

中使用SELECT

SELECT ROW_NUMBER() OVER(ORDER BY AuthorID), Body, AuthorID FROM Article;

Row Number