2010-12-07 50 views
4

我使用了一個選擇不同查詢,這導致我一個排序的數據。無論如何,我沒有得到數據分類?選擇獨特沒有排序

+0

你能告訴我們查詢嗎? – shamittomar 2010-12-07 19:47:50

+9

我只是好奇地想知道爲什麼它會排序或不排序。如果您需要某種順序,那麼您可以相應地對其進行排序,但如果您不這樣做,爲什麼它是排序問題? – 2010-12-07 19:49:52

+1

假裝它沒有排序。如果你需要隨機化,這是一個不同的問題。 – Kendrick 2010-12-07 19:50:28

回答

2

將此置於查詢結尾。這將有效地隨機化,然後會出現你不排序結果;)

ORDER BY Rnd([ID]); 

與表的主鍵更換ID。在Access SQL中,可以直接調用某些VB函數。在這種情況下,可以在查詢中調用Rnd函數,並從要排序的數據中提供種子值。

0

我認爲排序可能與DISTINCT的確定方式有關。 返回不同值的最簡單方法是對處理SQL謂詞返回的選擇集 進行排序,然後 僅返回DISTINCT列從先前行更改值的行。

簡而言之, DISTINCT要求在重複行被刪除的位置執行排序。

也就是說,不保證行以任何特定的 順序返回給您,除非您明確包含ORDER BY子句。

10

我會盡量詳細一點,以這是怎麼回事,爲什麼...雖然我的問題@ Vic的評論表示贊同......

  • 沒有明確說明的順序(通過order by子句),絕對不保證結果集中的任何順序。
  • 實際上,許多查詢將根據查詢計劃以及數據如何實際存儲和訪問而返回一致的順序......不依賴於此!
  • 具體而言,對於distinct查詢,sql引擎將對數據進行排序,以確保刪除任何重複項。

總之,如果結果集的順序很重要(即使所需的順序是「隨機」),您必須始終明確地聲明它。也就是說,從純粹基於集合的數學/ sql的角度來看,結果的順序應該不重要。