- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个返回表格的函数。
如果您运行 SELECT * FROM some_function(12345)
,结果是:
object_id | name
----------------
12345 | "B"
如果您运行 SELECT some_function(12345)
,结果是:
some_function
-------------
(12345,"B")
问题是我想要原始形式(以便我可以访问各个列值),但是 some_function()
的参数来自表中的列。我可以执行 SELECT some_function(thing_id) FROM things
但这会返回:
some_function
-------------
(12345,"B")
(12346,"C")
(12347,"D")
而我想要返回的是:
object_id | name
----------------
12345 | "B"
12346 | "C"
12347 | "D"
那么如何“取消嵌套”或“扩展”这样一个压缩行呢?
最佳答案
在 PostgreSQL 9.3 或更新版本中使用隐式横向查询:
SELECT f.* FROM things t, some_function(t.thing_id) f;
对于所有新查询,首选此公式。以上是标准公式。
它也适用于 RETURNS TABLE
或 RETURNS SETOF RECORD
的函数以及具有 RETURNS RECORD
的输出参数的函数。
它是以下内容的简写:
SELECT f.*
FROM things t
CROSS JOIN LATERAL some_function(t.thing_id) f;
以前的版本,导致 some_function
的多重计算,如果 some_function
返回一个集合,不 是否工作,不要使用它:
SELECT (some_function(thing_id)).* FROM things;
以前的版本,使用第二层间接避免对 some_function
进行多重计算。仅当您必须支持相当旧的 PostgreSQL 版本时才使用它。
SELECT (f).*
FROM (
SELECT some_function(thing_id) f
FROM things
) sub(f);
设置:
CREATE FUNCTION some_function(i IN integer, x OUT integer, y OUT text, z OUT text) RETURNS record LANGUAGE plpgsql AS $$
BEGIN
RAISE NOTICE 'evaluated with %',i;
x := i;
y := i::text;
z := 'dummy';
RETURN;
END;
$$;
create table things(thing_id integer);
insert into things(thing_id) values (1),(2),(3);
测试运行:
demo=> SELECT f.* FROM things t, some_function(t.thing_id) f;
NOTICE: evaluated with 1
NOTICE: evaluated with 2
NOTICE: evaluated with 3
x | y | z
---+---+-------
1 | 1 | dummy
2 | 2 | dummy
3 | 3 | dummy
(3 rows)
demo=> SELECT (some_function(thing_id)).* FROM things;
NOTICE: evaluated with 1
NOTICE: evaluated with 1
NOTICE: evaluated with 1
NOTICE: evaluated with 2
NOTICE: evaluated with 2
NOTICE: evaluated with 2
NOTICE: evaluated with 3
NOTICE: evaluated with 3
NOTICE: evaluated with 3
x | y | z
---+---+-------
1 | 1 | dummy
2 | 2 | dummy
3 | 3 | dummy
(3 rows)
demo=> SELECT (f).*
FROM (
SELECT some_function(thing_id) f
FROM things
) sub(f);
NOTICE: evaluated with 1
NOTICE: evaluated with 2
NOTICE: evaluated with 3
x | y | z
---+---+-------
1 | 1 | dummy
2 | 2 | dummy
3 | 3 | dummy
(3 rows)
关于sql - 如何将 "condensed"PostgreSQL 行扩展到单独的列中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444008/
如果我有以下矩阵,输入格式是列表的列表: BTE010011021120 如何构建以下 python 矩阵: 0 1 D = [[{1}, {1,2}], 0 [{2
我是 python 的新手,所以我可能使用了不正确的术语,但我该如何“压缩”这段代码? for i in self.letterWord[0:1]:
我有几种谷歌字体,我使用@import 规则导入到样式表中。除了 Roboto Condensed 之外,它们都渲染得很好。它回落到默认的无衬线字体,在我的例子中是 Helvetica。 @impor
我想减少 Google Charts' Area chart 的 hAxis 上的刻度数。我尝试使用 tick 选项,但它并不能完全实现我的目标。 例如,如果 hAxis 值如下:['Jun 2016
我正在开发一种方法,该方法返回一个整数,该整数对应于一年中第一天的一周中的某一天。 Int 0 是星期日,1 是星期一,2 是星期二,3 是星期三... 6 是星期六。方法头如下: private s
我有一个返回表格的函数。 如果您运行 SELECT * FROM some_function(12345),结果是: object_id | name ---------------- 123
我有一个看起来像这样的数据框 name time value1 value2 apple 8:30 17 21 apple
首先,我指的是一个例子: UINT f, i, s; CONST UINT k[5] = { VK_LBUTTON, VK_RBUTTON, VK_MBUTTON, VK_XBUTTON1, VK_X
我有一个列表,如我附加的代码中所示。如果有任何共同值,我想链接每个子列表。然后我想用一个精简的列表列表替换列表列表。 示例:如果我有一个列表 [[1,2,3],[3,4]] 我想要 [1,2,3,4]
我想在我的网站上使用阿拉伯字体并希望压缩标题,但在文本中没有效果,但是当我使用像 Arial 这样的英文字体时,CSS 会有效地压缩字符。 请帮我把阿拉伯字体压缩一下。 .heading{ font-
我正在使用一个元组来存储 find -exec stat 命令的输出,并且需要压缩它以便在其上运行 du。输出是一个元组,每个项目都是 (username,/path/to/file) 我想将它压缩成
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this q
我看到一个 Driod Sans Condensed字体在 android 上可用,但据我所知,android:typeface 属性只能具有以下值 - normal、sans、 serif 和 mo
问这个问题让我觉得自己像个布偶,但我怎样才能让 Futura Condensed Extra Bold 出现在 CSS 中。 在有人说之前,是的,我知道那些使用 Windows 的人看不到它,但这是针
我正在尝试使用 table-condensed,但仅在 xs.我试过这个,但没有运气。 它隐藏了第二张 table 的整个 table 。有没有一种方法可以只在 xs 中压缩而不重复整个表结构?
我注意到字体 Helvetica Neue Condensed 在 macOS 上没有正确呈现。实际上,如下图所示,macOS 不会根据 line-height 使字体居中。根据我的测试,它完全不依赖
我正在尝试使用 100 字重的 Avenir Next Condensed 字体(非常轻)。它在我尝试过的所有浏览器上都运行良好,除了 iOS,它显示为斜体。有什么解决办法吗? 这是一个测试页面,当在
我试图将 Gotham 字体文件链接到我的页面,但我无法让它工作!我错过了什么吗?这些是我使用的 css: @font-face { font-family: 'Gotham Condensed';
PDDocument document = PDDocument.load(file); if( document.isEncrypted() ) { document
我正在执行哈希操作,我需要一致、准确、高效等附加原始字节。 我不能乱用 ASCII 编码的数字字符串,我只需要获取原始字节。 MySQL 的转换函数非常困惑,并且不会产生对像我这样的 SQL-Serv
我是一名优秀的程序员,十分优秀!