2014-02-26 92 views
3

如何拼合外部select(在PostgreSQL中)的foo列?在postgres中拼合嵌套记录

WITH RECURSIVE t AS (
    SELECT row(d.*) as foo FROM some_multicolumn_table as d 
UNION ALL 
    SELECT foo FROM t WHERE random() < .5 
) 
SELECT foo FROM t 

我要的是输出所有列(水平,即作为多列的行)在外部选择,而不仅仅是一个单一的“记录”栏。

如何做到这一点?

+0

垂直或水平? –

+0

@JakubKania水平:) –

回答

2

你不需要ROW构造存在,所以你可以通过使用(foo).*扩大纪录:

WITH RECURSIVE t AS (
    SELECT d as foo FROM some_multicolumn_table as d 
UNION ALL 
    SELECT foo FROM t WHERE random() < .5 
) 
SELECT (foo).* FROM t; 

虽然写此查询可能是简单的:

WITH RECURSIVE t AS (
    SELECT d.* FROM some_multicolumn_table as d 
UNION ALL 
    SELECT t.* FROM t WHERE random() < .5 
) 
SELECT * FROM t; 

我建议尽量保持简单。但我认为这仅仅是一个例证。