簡體   English   中英

SQL命令單個字段,基於LIMIT的不同結果

[英]SQL order single field, different result based on LIMIT

今天,我從一個簡單的SQL查詢中看到了一個古怪的行為。 一個SELECT,一些JOIN,ORDER BY一個字段。 我現在無法解釋的是,基於LIMIT語句,對於相等的值,排序會發生變化。 讓我給你舉個例子 :

SELECT facture.ID, [ bunch a fields ... ] FROM facture 
CROSS JOIN contact [ a few JOINs ... ] 
WHERE facture.USER_ID=usager.ID AND usager.ID=contact.USER_ID 
ORDER BY contact.NAME DESC LIMIT 50;

第一個結果將具有完全相同的名稱,並按如下方式組織:166,172,167,169(ID)。 如果我擺脫LIMIT聲明,我應該有相同的順序,對於那些結果......對嗎? 不是:172,166,167,169。如果我改變限制的值,我也會得到不同的順序。 使用LIMIT 60,我得到:167,166,172,169。

所以我試圖理解......為什么不同的排序順序為相同的值? 在使用ORDER BY中指定的字段進行排序后,DB是否應該根據ID或其他內容進行排序? 這聽起來很隨意。 BTW數據庫是PostgreSQL。

返回行的順序不確定。 因為您只按contact.Name排序,並且返回的所有行具有相同的名稱,行的順序可以從查詢更改為查詢。 您也應該通過ID訂購。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM