unpivot用法 MySql_unpivot和PostgreSQL

unpivot用法 MySql_unpivot和PostgreSQL创建一个示例表 CREATETEMPTA idint atext btext ctext INSERTINTOfo 1 ant cat chimp 2 grape mint basil 您可以使用 UNIONALL 来 取消透视 或 取消交叉表 SELECTid a AScolname a

创建一个示例表:

CREATE TEMP TABLE foo (id int, a text, b text, c text);

INSERT INTO foo VALUES (1, ‘ant’, ‘cat’, ‘chimp’), (2, ‘grape’, ‘mint’, ‘basil’);

您可以使用UNION ALL来“取消透视”或“取消交叉表”:

SELECT id,

‘a’ AS colname,

a AS thing

FROM foo

UNION ALL

SELECT id,

‘b’ AS colname,

b AS thing

FROM foo

UNION ALL

SELECT id,

‘c’ AS colname,

c AS thing

FROM foo

ORDER BY id;

这会在上运行3个不同的子查询foo,每个要取消透视的列一个,然后在一个表中返回每个子查询中的每个记录。

但这将扫描表N次,其中N是您要取消透视的列数。这效率低下,而且是一个很大的问题,例如,当您使用非常大的表进行扫描时,这需要很长时间。

而是使用:

SELECT id,

unnest(array[‘a’, ‘b’, ‘c’]) AS colname,

unnest(array[a, b, c]) AS thing

FROM foo

ORDER BY id;

这更容易编写,并且只会扫描表一次。

array[a, b, c]返回一个数组对象,其值分别为a,b和c。 unnest(array[a, b, c])将数组的每个元素的结果分成一行。

希望有帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/205097.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午6:49
下一篇 2026年3月19日 下午6:49


相关推荐

  • 魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程

    魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程固件说明:1、魔百盒CM211-2-全系列-海思Hi3798MV300H/310-通用NAND和EMMC卡刷固件,支持红外蓝牙遥控,支持常见多种无线,同时支持RTL8822BS、RTL8822CS、MT7661、MT7663、MT7668等无线;2、解除官方屏蔽无线功能,有线和无线正常使用;3、代工标识说明:一般没标识是朝歌代工,带有ZG字母的就是朝歌代工,带有CH字母的就是长虹代工,带有YS或YST字

    2022年7月24日
    66
  • linux 挂载磁盘命令

    linux 挂载磁盘命令把一个磁盘/dev/sda挂载到某个目录下makdir /mnt/long //创建一个空的挂载节点mount -text4 /dev/sda /mnt/long

    2022年6月19日
    40
  • 详细设计文档格式

    详细设计文档格式1 背景 背景 原因 2 名词解释 对文档中出现新的或不常见的名词 概念或简略语给出定义和解释 3 设计目标 3 1 实现的功能 概要描述要实现的功能 列出要实现的功能点及子功能点 并对每一个功能点进行详细说明 功能点之间的层级和关联关系要明晰 仅描述功能 不需要涉及实现方案 功能取舍等问题 3 2 性能指标 性能目标需要分解到模块 描述对该模块的性能要求

    2026年3月18日
    3
  • STL之nth_element()(取容器中的第n大值)

    STL之nth_element()(取容器中的第n大值)

    2022年1月29日
    45
  • pycharm如何配置git_idea怎么配置git

    pycharm如何配置git_idea怎么配置gitPycharm配置git环境在网上查了一些发现都已经过时了,有的根本没办法用,自己摸索了一下午。捣鼓的差不多了至少可以用hhhh默认各位老铁都已经安装好了,Git咯,并且有自己的github网址或者gitee网站咯0X1创建一个新项目首先新键一个新的项目,直接creat就好了创建好了如下:0X2匹配GitFile->Settings->VersionControl->Git详情如下:找到Setting,点击进入找到VersionControl,

    2022年8月26日
    7
  • HTML简单注册界面——含表单验证[通俗易懂]

    HTML简单注册界面——含表单验证[通俗易懂]最近学习HTML表单,感慨万千。虽然看起来好像不难学,但要是真自己实践起来问题却多多。这里是我写的一个简单的注册页面,只有“注册账号、密码、重输密码”三个文本框,还包含了原生JavaScript验证。(记一下,也希望能给有需要的人一点帮助。)

    2025年7月20日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号