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

如何在SQL中创建非规范表1的规范化版本 实现多爱好列转换

横排多爱好字段拆分为规范化单值字段的实现方法

转换核心逻辑是将原表中同一行存储的多个并列爱好字段,通过行拆分重组为单值列存储的规范化结构,全程无需复杂关联查询即可完成。

通用SQL实现步骤

  • 先创建符合目标结构的新表2,对应字段为Id、name、hobby三个独立列
  • 通过两次独立查询分别读取原表的hobby1、hobby2字段值,给两个查询的结果列统一命名为hobby,使用UNION ALL将两段查询结果纵向拼接,直接写入新表2即可

可直接执行的参考SQL代码:

-- 创建目标规范化表
CREATE TABLE table2 (
  Id INT,
  name VARCHAR(50),
  hobby VARCHAR(100)
);

-- 拆分原表数据写入新表
INSERT INTO table2 (Id, name, hobby)
SELECT Id, name, hobby1 AS hobby FROM table1
UNION ALL
SELECT Id, name, hobby2 AS hobby FROM table1;

实操注意事项

  • 优先使用UNION ALL而非UNION:前者不会触发全量结果去重操作,执行性能更高,完全适配这类拆分字段的场景,不会引入额外计算开销
  • 空值过滤适配:如果原表存在某条记录中hobby1或hobby2为NULL的情况,拆分后会生成爱好值为空的无效行,可在每段SELECT的查询逻辑中加入空值判断过滤,例如给两段查询分别追加WHERE hobby1 IS NOT NULL、WHERE hobby2 IS NOT NULL条件
  • 扩展兼容:如果后续原表新增更多并列爱好字段(如hobby3、hobby4),只需在UNION ALL后追加对应读取该字段的SELECT语句即可,无需调整原有转换逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 23:27:04