1
我有一張表,我經常以某種方式訂購。該排序是我們可以稱之爲rank的派生列的基礎。如果我查詢整個表,我可以讓數據庫計算出排名對我來說:postgres視圖中的臨時序列
CREATE TEMP SEQUENCE the_seq;
SELECT my_table.foo, my_table.bar, nextval('the_seq') AS rank
FROM my_table
ORDER BY my_table.bar DESC;
這會產生像有用的結果:
foo | bar | rank
-------------------
0005 | 2100 | 1
0003 | 1632 | 2
0002 | 1200 | 3
0001 | 899 | 4
0004 | 500 | 5
隨着該結果集我能確定任何foo的秩。然而,這需要我查詢整個表並遍歷結果集,即使我只想得到foo'0001'的排名。
理想我想有一個確實的排名列給我一個觀點,所以我可以武斷地說:
SELECT my_table_vw.foo, my_table_vw.bar, my_table_vw.rank
FROM my_table_vw
WHERE my_table_vw.foo = '0001'
和剛剛獲得
foo | bar | rank
-------------------
0001 | 899 | 4
但是我不知道如何構建在數據庫中,因爲視圖不能在其定義中構造臨時序列。我正在努力做甚麼?我覺得必須這樣做,因爲替代方案在插入或查詢整個桌面時保持排名似乎很可笑。
完美的上帝。感謝您的即時響應! – Karl