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

如何将表中id列值随机替换为预定义常量值?

随机替换ID列为预定义常量值的SQL方案

问题说明

需要将表my_table中的id列原有值,随机替换为'aa'、'bb'、'cc'三个常量值,支持查询生成新列或直接更新原表。

原SQL错误原因

你之前尝试的select id, Column_B, ['aa', 'bb', 'cc'] as new_col from my_table不符合SQL语法规范,SQL中无法直接用数组字面量作为列值,需结合随机函数实现随机取值逻辑。


分数据库解决方案

MySQL

  • 查询生成新列(保留原ID,新增随机值列):
SELECT 
  id AS original_id,
  Column_B,
  ELT(FLOOR(RAND() * 3) + 1, 'aa', 'bb', 'cc') AS new_id
FROM my_table;
  • 直接更新原表ID列:
UPDATE my_table
SET id = ELT(FLOOR(RAND() * 3) + 1, 'aa', 'bb', 'cc');

PostgreSQL

  • 查询生成新列:
SELECT 
  id AS original_id,
  "Column B",
  (ARRAY['aa', 'bb', 'cc'])[floor(random() * 3) + 1] AS new_id
FROM my_table;
  • 直接更新原表ID列:
UPDATE my_table
SET id = (ARRAY['aa', 'bb', 'cc'])[floor(random() * 3) + 1];

SQL Server

  • 查询生成新列:
SELECT 
  id AS original_id,
  Column_B,
  CHOOSE(ABS(CHECKSUM(NEWID())) % 3 + 1, 'aa', 'bb', 'cc') AS new_id
FROM my_table;
  • 直接更新原表ID列:
UPDATE my_table
SET id = CHOOSE(ABS(CHECKSUM(NEWID())) % 3 + 1, 'aa', 'bb', 'cc');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:52:08