Postgresql
Postgresql:按數組列中的值位置排序,然後按二級順序
我不太確定最好的表達方式是什麼……
所以在我的數據庫中有一個
pillars
文本數組,它基本上是一個列舉,供應商在其中訂購了對他們的業務最重要的價值,從最重要到為客戶提供價值,再到最不重要。我正在使用 PostGIS 來查詢特定區域中的提供程序,並希望返回首先按
pillar
客戶選擇他們正在尋找的位置排序的提供程序,然後按最近的位置。因此,如果
pillars
全部都有值['a', 'b', 'c', 'd']
,則以任何順序取決於選擇的提供者和客戶選擇的支柱c
查詢的結果最好首先返回
c
在數組索引處具有柱子的任何/所有提供者,0
按到地理點的距離排序,然後由c
在數組索引處具有柱子的提供者1
第二個按到客戶端地理點的距離排序,然後是 idx2
,然後是 idx3
我真的只在所有情況下都在尋找前 3 個結果,並且只有在 index 的結果少於 3 個時才需要
c
在 idx具有支柱的提供程序1``0
這可以在單個查詢中完成嗎?或者我應該使用 where 子句執行它並檢查結果長度,直到我有 3 個結果?
該
pillars
列使用 gin 索引 btw 進行索引
這聽起來很簡單:
ORDER BY array_position(pillars, 'c'), st_distance(....)