序号的问题

fyming 2017-05-31 10:45:30
测试环境:
CREATE TABLE #(
ID INT IDENTITY(1,1),
F1 NVARCHAR(100),
F2 NVARCHAR(100)
)
INSERT INTO #(F1,F2)
SELECT 'A0','' UNION ALL
SELECT 'A0','' UNION ALL
SELECT 'A0','' UNION ALL
SELECT 'A1','' UNION ALL
SELECT 'A1','' UNION ALL
SELECT 'A2',''
----------------------------------------------
如何UPDATE #的F2,达到如下效果:
A0 1
A0 2
A0 3
A1 1
A1 2
A2 1
---------------------------
请指教!
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyming 2017-06-01
  • 打赏
  • 举报
回复
引用 2 楼 sinat_28984567 的回复:
CREATE TABLE #(
ID INT IDENTITY(1,1),
F1 NVARCHAR(100),
F2 NVARCHAR(100)
)
INSERT INTO #(F1,F2)
SELECT 'A0','' UNION ALL
SELECT 'A0','' UNION ALL
SELECT 'A0','' UNION ALL
SELECT 'A1','' UNION ALL
SELECT 'A1','' UNION ALL
SELECT 'A2',''

UPDATE  a
SET     a.F2 = b.num
FROM    # a ,
        ( SELECT    * ,
                    ROW_NUMBER() OVER ( PARTITION BY F1 ORDER BY ID ) AS num
          FROM      #
        ) b
WHERE   a.ID = b.Id

SELECT * FROM #
DROP TABLE #
真棒!!!
zjl8008 2017-06-01
  • 打赏
  • 举报
回复
PARTITION BY F1 ORDER BY ID
二月十六 版主 2017-06-01
  • 打赏
  • 举报
回复
CREATE TABLE #(
ID INT IDENTITY(1,1),
F1 NVARCHAR(100),
F2 NVARCHAR(100)
)
INSERT INTO #(F1,F2)
SELECT 'A0','' UNION ALL
SELECT 'A0','' UNION ALL
SELECT 'A0','' UNION ALL
SELECT 'A1','' UNION ALL
SELECT 'A1','' UNION ALL
SELECT 'A2',''

UPDATE a
SET a.F2 = b.num
FROM # a ,
( SELECT * ,
ROW_NUMBER() OVER ( PARTITION BY F1 ORDER BY ID ) AS num
FROM #
) b
WHERE a.ID = b.Id

SELECT * FROM #
DROP TABLE #


道素 2017-06-01
  • 打赏
  • 举报
回复

UPDATE a SET a.F2=b.rn FROM # AS a 
INNER JOIN(
   SELECT ID,ROW_NUMBER()OVER(PARTITION BY F1 ORDER BY ID) AS rn FROM #
) b ON a.ID=b.ID

34,590

社区成员

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

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