如何将表中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
相关产品推荐
相关产品推荐

