sql-server - 为表中每条记录的字段添加 1

标签 sql-server procedure

我有一个表记录:

ID Name RecordId GroupField
1  asd  1        Group1
2  asd2 1        Group1
3  asd3 1        Group1
4  asd4 1        Group2
5  asd5 1        Group2

我需要的是一个查询,它将根据我的记录所在的组更新 RecordId 列。结果如下所示:

ID Name RecordId GroupField
1  asd  1        Group1
2  asd2 2        Group1
3  asd3 3        Group1
4  asd4 1        Group2
5  asd5 2        Group2

RecordId 必须从 1 开始递增,并且需要为每个组重置并从 1 开始。

最佳答案

您可以尝试使用 ROW_NUMBER

类似的东西

;WITH Vals AS (
  SELECT ID, ROW_NUMBER() OVER (PARTITION BY GroupField ORDER BY ID) NewID
  FROM Table1
 )
UPDATE Table1
SET RecordID = NewID
FROM Table1 t INNER JOIN
Vals v ON t.ID = v.ID

SQL Fiddle DEMO

关于sql-server - 为表中每条记录的字段添加 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858557/

相关文章:

sql - 有免费的SQL Server Mgmt Studio自动完成加载项吗?

oracle - 如果 DB Oracle 中存在删除过程

java - 在mysql数据库中多次插入

sql-server - 如何在 Sql Server 函数内执行字符串的技巧

sql-server - 具有多个结果集的 FSharp.Data.SqlClient

c# - 使用具有自己的事务范围的多个 DbContext

sql-server - SQL Server 服务无法启动

mysql - 错误代码: 1241. Workbench, MySQL, cannot resolve the parameters

c - 如何使用 getline(s, lc) 函数更新 int 变量而不使用 "pointers"? (C)

java - org.flywaydb.core.api.FlywayException : Unable to instantiate JDBC driver when my java class is triggered from ant taskdef