You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按Name列字母序更新MyHits表的Sequence列?

解决方案

要实现按Name列字母顺序设置Sequence列的值,且不使用游标,可以利用窗口函数ROW_NUMBER()生成排序后的序号,再通过关联更新完成赋值。以下是适用于主流关系型数据库(如SQL Server、MySQL 8.0+、PostgreSQL等)的SQL语句:

方法一:使用公共表表达式(CTE)

WITH RankedNames AS (
    SELECT 
        Name,
        ROW_NUMBER() OVER (ORDER BY Name) AS NewSequence
    FROM MyHits
)
UPDATE MyHits
SET Sequence = rn.NewSequence
FROM MyHits h
INNER JOIN RankedNames rn ON h.Name = rn.Name;

方法二:使用子查询关联更新(适用于MySQL)

UPDATE MyHits h
INNER JOIN (
    SELECT Name, ROW_NUMBER() OVER (ORDER BY Name) AS NewSequence
    FROM MyHits
) rn ON h.Name = rn.Name
SET h.Sequence = rn.NewSequence;

说明

  • ROW_NUMBER() OVER (ORDER BY Name)会按照Name列的字母升序生成连续的序号,恰好对应需求中Sequence列的目标值:Ana对应1,Dan对应2,Len对应3。
  • 因为Name列无重复值,所以通过Name关联原表和排序后的数据集可以准确完成更新。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:55:16