2014-02-26 175 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; 

我建議儘量保持簡單。但我認爲這僅僅是一個例證。