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

如何根据数据库表字段值将单行记录拆分为1行或2行输出

实现方案

你可以通过以下两种常用SQL方案实现需求:

方案1:通用UNION方案(兼容所有SQL数据库)

直接通过UNION合并两个单位列的查询结果即可,UNION自带的去重特性会自动合并单位相同的重复行:

SELECT item_name, unit_1 AS unit FROM items
UNION
SELECT item_name, unit_2 AS unit FROM items
ORDER BY item_name, unit;

逻辑说明:

  • 第一条查询取出所有商品的unit_1作为单位
  • 第二条查询取出所有商品的unit_2作为单位
  • 两个结果集通过UNION合并时,同商品同单位的重复行会被自动剔除,最终输出刚好符合你的要求。

方案2:LATERAL JOIN方案(适用于PostgreSQL、MySQL 8.0+、SQL Server等支持横向连接的数据库)

如果后续可能扩展更多单位列,这种写法的扩展性更好:

SELECT t.item_name, u.unit
FROM items t
JOIN LATERAL (
    SELECT DISTINCT unit 
    FROM (VALUES (t.unit_1), (t.unit_2)) AS v(unit)
) u ON TRUE
ORDER BY t.item_name, u.unit;

逻辑说明:

  • 把每条记录的两个单位字段构造成临时行数据,通过DISTINCT去重后再和原表关联,即可得到拆行后的结果。

两种方案代入你的示例数据后,都会得到你预期的输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:36:03