2017-09-12 63 views
1

在psql中使用連接時如何對記錄進行排序?在psql中使用連接時如何對記錄進行排序?

在某些情況下,恍如由列 否則任何一個排序,似乎是借於它maches ON後,我們的查詢排序。但不知道如何完成。 特別是在使用左右連接時 簡單地說,顯示記錄的本質是什麼?

+0

這是你在尋找什麼? https://www.w3schools.com/sql/sql_join.asp – kenfire

+0

@kenfire我在使用JOIN查詢時詢問SQL的排序(記錄顯示順序)性質。 – robincEPtion

+2

總之:沒有訂單。如果您想在結果中訂購*,您必須添加'order by'子句 – joop

回答

2

通常,SQL表中的記錄沒有內部順序。從Postgres documentationORDER BY

後一個查詢產生的輸出表(選擇列表已經被處理後),它可以任選地被排序。 如果未選擇排序,則行將以未指定的順序返回。這種情況下的實際訂單將取決於掃描和連接計劃類型以及磁盤上的訂單,但不能依賴它。如果明確選擇了排序步驟,則只能保證特定的輸出排序。

如果您希望在結果集中具有特定的順序,您需要使用ORDER BY指定一個順序。例如,如果你連接兩個表AB你可以使用:

select 
    a.col, a.col2, b.col3 
from A a 
inner join B b 
    on a.col = b.col 
order by 
    a.col2  -- or replace with whatever column/logic you want to use 

即使有似乎是一些爲了你當前的查詢,你不應該依賴於它。添加更多數據,添加列或者抽空都可能導致此「訂單」發生變化。

+0

謝謝。對於我的問題,這也是我的回答,但對於「沒有內部訂單」 - 在官方文檔中有關此的任何引用? – robincEPtion

+0

@robincEPtion檢查我的更新答案。 –

+0

@robincEPtion:請注意,這不是特定於Postgres。所有關係數據庫系統都是如此。 –

相關問題