PostgreSQL 中的order by 1
業務背景:在做一個業務的時候,需要通過某個計算列來進行排序。有一個分數,這個分數是由多個其他字段計算的一個結果集,沒有名稱,也不是表中的字段,所以不能直接使用它進行排序。
方法一、嵌套
可以在結果集外面在包裝一層,這樣計算列就有名稱了。
方法二、order by + 數字
SELECT tn_year,COALESCE(tn_sysscore,0) - COALESCE(tn_syslosescore,0) + COALESCE(tn_upscore,0) + COALESCE(tn_downscore,0),* FROM tn_performance
WHERE 1 = 1
ORDER BY 1 DESC, 2 DESC
總結
計算列排序,使用不到索引,會涉及到表的整體掃描;影響性能。