问题标签 [unnest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - 在不创建临时表的情况下加入数组 unnest 的输出
我在 UDF 中有一个查询(如下所示),它unnest()
是一个整数数组并连接它,我在我的 pgplsql UDF 中创建了一个本地临时表,因为我知道这是有效的。是否可以unnest
直接在查询中使用来执行连接,而不必创建临时表?
我想这样做的原因是我希望能够查看查询计划,而不必求助于查看服务器日志中的自动解释输出。本地临时表可以防止这种情况。即,我无法复制粘贴结果查询并逐字执行。
sql - 将 UNNEST 与 JOIN 一起使用
我希望能够unnest()
在具有许多JOIN
s 的复杂 SQL 查询中使用 PostgreSQL 中的函数。这是示例查询:
我想消除taggings
这里的表,因为我的mentions
表有一个名为taglist的整数数组字段,其中包含.mentions
我试过以下:
这可行,但会带来与第一个查询不同的结果。
所以我想做的是使用查询中的结果SELECT unnest(taglist)
来JOIN
补偿taggings
表。
我怎样才能做到这一点?
更新: taglist
与提及的相应标签 ID 列表相同。
arrays - 转换 unnest() 的结果时丢失 NULL 元素
unnest()
在扩展数组后进行投射时,我偶然发现了非常奇怪的行为。
介绍
使用 unnest() 有三种基本语法变体:
1) SELECT unnest('{1,NULL,4}'::int[]) AS i;
2) SELECT i FROM unnest('{2,NULL,4}'::int[]) AS i;
3)SELECT i FROM (SELECT unnest('{3,NULL,4}'::int[])) AS t(i);
所有这些都在结果中包含一行,NULL
如预期的那样
要将数组元素转换为不同的类型,可以在扩展数组后立即将元素转换为基本类型,或者在扩展之前将数组本身转换为不同的数组类型。第一个变体对我来说似乎更简单更短:
甲)SELECT unnest('{4,NULL,1}'::int[])::text;
乙)SELECT unnest('{4,NULL,2}'::int[]::text[]);
奇怪的行为
所有可能的组合,除了2A)
由于某种原因,无法2)
与A)
错误:“::”处或附近的语法错误
我可以接受。由于某种原因尚未实施的罕见极端案例。
但是,所有其他组合都会飞:
1A) SELECT unnest('{1,NULL,1}'::int[])::text AS i;
2A)SELECT i FROM unnest('{2,NULL,1}'::int[])::text AS i;
3A) SELECT i FROM (SELECT unnest('{3,NULL,1}'::int[])::text) AS t(i);
1B) SELECT unnest('{1,NULL,2}'::int[]::text[]) AS i;
2B) SELECT i FROM unnest('{2,NULL,2}'::int[]::text[]) AS i;
3B)SELECT i FROM (SELECT unnest('{3,NULL,2}'::int[]::text[])) AS t(i);
结果与上述相同。
真的很奇怪的行为
以下意见A)
仅涉及。可以通过替换来避免该问题B)
。
正如预期的那样,到目前为止,我们已经看到数组中的元素在所有查询中都NULL
产生了具有值的行。但是,将结果从某些数组类型转换为某些基本类型NULL
时,情况并非如此。
这里具有NULL 值的行突然消失(!):
例子
我去看看兔子洞有多深。这里有些例子:
NULL
消失:
NULL
停留:
这似乎是不可接受的。
在测试了相当多的组合之后,模式似乎是:
相关类型之间的强制转换会导致NULL
元素丢失。
在不相关类型之间进行强制转换会导致NULL
元素被保留。
除了varchar[]
->text
反之亦然,这破坏了我的这个小假设。或者varchar
和text
我想象的不同。
使用 PostgreSQL 9.1 和 9.2 测试。相同的结果。
-> SQL小提琴
问题
我在这里错过了什么吗?有人可以解释这种行为吗?
如果没有,问题就变成了:我应该继续提交错误报告吗?
sql - 新的数组聚合函数
我有一张这样的桌子:
它包含每个员工的工作时间(数组中的列是一周中的天数,u
并且x
是空闲天数)。
是否可以将这些行聚合成一个包含每个 col 的总和的行(如果它是一个 int)?
我的目标是从这样的查询答案中获得:{24,16,16,0,8,0,0}
sql - Postgresql以通用方式将列更改为行
需要从包含大约一百列的表中检索键值对(列名,值)。
以下查询正是需要的。
但是,它需要明确指定列。
有没有办法通过根本不直接指定列名或动态生成来生成相同的输出。
sql - 将多维数组转换为记录
给定:{{1,"a"},{2,"b"},{3,"c"}}
期望:
您可以使用以下查询获得预期结果;但是,最好有一些随数组大小缩放的东西。
arrays - 复合类型数组作为存储过程输入
我正在使用 plpgsql 创建一个存储过程,方法是传递一个类型数组并在过程中执行一个循环,以便我可以插入每个信息类型
问题是我不知道如何将函数与数组输入一起使用。我做了一些实验(只有一些愚蠢的输入):
但是 PostgreSQL 说它是一个record[]
,我还没有测试循环部分......
我在这个链接中发现了一个类似的问题:
Declare variable of composite type in PostgreSQL using %TYPE
但它没有使用数组。如果这只是一个重复的问题,也许你们可以指出我正确的方向!
sql - 如何获得 3 维数组的最小值或最大值?
如何在 PostgreSQL 中找到 3 维数组的最大(或最小)元素?
有没有什么功能或更快的方法来代替这个?:
sql - 单个选择列表中的 SQL 多个 UNNEST
我正在实施一个查询系统。我实现了 unnest 功能。现在用户询问是否在单个 select 语句中使用多个 unnest。我使用 PostgreSQL 作为一种指南,因为大多数用户在我们的查询系统之前使用它。
PostgreSQL 有这样奇怪的行为:
我的实现总是生成为笛卡尔积。我想知道,这背后的正确逻辑是什么?PostgreSQL 是在做正确的事还是只是一个错误?我没有在 ANSI 文档或 PostgreSQL 文档中找到明确的描述。
angularjs - angularjs unnest ng-repeats 进入一个查询
如何将其取消嵌套到一个查询中。我想象它是这样的:
对象 blub 有多个标签,有多个 blub 对象。
编辑:Plunker: http ://plnkr.co/edit/mWjyryOsV5zZJisZzV3D 目标:将 ng-repeat 减少 2 倍为显示相同标签的 ng-repeat。