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

如何通过查询在特定列有值时人工生成新记录?

解决方案:用UNION ALL生成额外记录

完全可以通过SQL查询实现这个需求!核心思路是利用UNION ALL把原表的现有记录,和当Column3有值时生成的额外记录合并在一起,刚好能得到你想要的3条结果。

举个具体例子说明

假设你的表名为non_normalized_table,结构和原始数据如下:

Column1Column2Column3
101AppleBanana
102CherryNULL

我们需要把第一条记录里的Column3值(Banana)当作新的Column2值,生成一条额外记录。对应的SQL查询如下:

-- 第一步:获取原表的所有原始记录
SELECT Column1, Column2, Column3
FROM non_normalized_table

UNION ALL

-- 第二步:仅筛选Column3非空的行,生成以Column3为Column2的额外记录
SELECT Column1, Column3 AS Column2, NULL AS Column3
FROM non_normalized_table
WHERE Column3 IS NOT NULL;

查询结果说明

执行这条SQL后,你会得到3条记录:

  • 原有的两条原始记录
  • 新增的一条记录:Column1=101, Column2=Banana, Column3=NULL

关键注意事项

  • 确保UNION ALL前后两个查询的列数和数据类型完全匹配,否则会触发SQL语法错误
  • 如果你的Column3可能存在空字符串(而非NULL),需要把WHERE条件调整为:WHERE Column3 IS NOT NULL AND Column3 != ''
  • 优先使用UNION ALL而非UNION,因为我们不需要去重(原记录和新增记录不会重复),这样查询效率会更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:38:47