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

SQL如何基于指定行字段值生成对应固定的UniqueIdentifier值

同字段相同值映射唯一ID实现方案

你当前使用的UPDATE ROW2 SET ROW2 = NEWID(); 语句会为每一行单独生成新的GUID,所以相同ROW1值也会拿到不同ID。要实现相同ROW1对应同一个唯一ID,可通过预生成ROW1和GUID的映射关系后关联更新,不同数据库实现如下:

SQL Server 实现

WITH ROW1_GUID_Map AS (
    SELECT 
        ROW1,
        NEWID() AS SharedGUID
    FROM 你的实际表名
    GROUP BY ROW1
)
UPDATE t
SET t.ROW2 = m.SharedGUID
FROM 你的实际表名 t
INNER JOIN ROW1_GUID_Map m 
    ON t.ROW1 = m.ROW1;

这段语句会先为每一个唯一的ROW1值生成对应的唯一GUID,再通过关联更新对应所有相同ROW1的行,保证ROW1值相同的行拿到同一个GUID。

MySQL 实现

MySQL中使用UUID()代替SQL Server的NEWID(),语句如下:

UPDATE 你的实际表名 t1
JOIN (
    SELECT ROW1, UUID() AS SharedGUID
    FROM 你的实际表名
    GROUP BY ROW1
) t2 ON t1.ROW1 = t2.ROW1
SET t1.ROW2 = t2.SharedGUID;

注意事项

  • 执行更新操作前建议先备份原表数据,也可以先单独执行内层的映射查询,验证映射关系是否符合预期
  • 需将上述语句中的你的实际表名替换为你自己的表名称
  • 如果后续新增数据也需要遵循相同规则,可新增触发器逻辑:新增数据时先判断ROW1是否已存在,存在则复用已有GUID,不存在则生成新的GUID存入ROW2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:09:01