我有一個複雜的PSQL函數,它返回表記錄(樹中葉記錄的祖先路徑,yikes)的SETOF
,通常每次只有幾個記錄 - 祖先 - 這適合於應用程序的其餘部分完美。如何在Postgres中反轉SETOF的順序?
例如,假設記錄:
id: 5, parent_id: null
id: 1, parent_id: 5
id: 3, parent_id: 1
應的功能被稱爲get_ancestry(3)
我希望它返回SETOF
記錄嚴格按照此順序包含3, 1, 5
- 和順序很重要明顯。
然而,這一個小小的重要的地方,我需要之前迭代的確切相反的順序SETOF
的記錄,在本例中,預期的結果將是5, 1, 3
。
或者換句話說給出了一個返回SETOF的函數,如何編寫一個函數以相反的順序返回相同的SETOF?
- 沒有
ORDER BY
我可以用它來幫助自己一起 - 我可以很容易地計算它幾乎,但如何將它添加到屬於一個表中的記錄對象? - 我想轉換
SETOF
到一個數組,然後反向陣列的,但沒有發現任何使用Google - 不是反轉陣列,也不約轉換SETOF
到一個數組 - 我想加入一個
level
屬性的這將是等於0如果記錄是頂級的,那記錄的孩子將有level=1
等等,但是將另一列添加到對於這個查詢的超忙不斷更新表中,其中必須以某種方式更好地工作似乎只是錯誤 - 重寫複雜函數以完全相同的方式完成相當棘手的邏輯,但遞歸其他路徑看起來像是維護/ bugfi x噩夢
怎麼辦?
請** [編輯] **您的問題,並添加一些樣本數據和基於該數據的預期輸出。 [**格式化文本**](http://stackoverflow.com/help/formatting)請,[**沒有屏幕截圖**](http://meta.stackoverflow.com/questions/285551/why-may -i-不上傳圖像-的代碼上那麼當灰化-A-問題/ 285557#285557)。 ** [**]您的問題 - 請勿**在論壇中發佈代碼或其他信息。 –
@a_horse_with_no_name按要求完成! – bbozo
說實話,整個問題都在標題中,看起來很清楚。 「給定一個返回SETOF的函數,如何編寫一個以相反順序返回相同SETOF的函數」。 – bbozo