1. 程式人生 > >當SQL中ORDER BY待排序欄位值相同時,查詢結果是什麼?

當SQL中ORDER BY待排序欄位值相同時,查詢結果是什麼?

簡書 Wwwwei
轉載請註明原創出處,謝謝!

前言

  資料庫分頁是後臺經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序欄位值相同時,我們得到的查詢結果會是什麼呢

問題描述

  資料分頁時需要根據資料記錄建立時間create_time欄位倒序,即使用order by create_time desc,但是我們會發現,前端進行請求時獲取的資料並不正確,分頁中出現了一定的重複資料。

問題原因

  由於大量資料是併發建立的,所以create_time欄位值是相同的。這裡會有一個很有趣的問題,當order by的欄位相同的時候 系統對資料的排序可能變得隨機,即一會兒這條資料在前面,一會兒這條資料在後面了 ,所以當翻頁的時候我們很容易便看到了重複的資料。

做個實驗

  我們可以通過一組資料做個簡單實驗,以下為一組實驗資料,member_id欄位為資料主鍵,資料的create_time欄位完全相同

                               實驗資料
                                                                         實驗資料
  我們執行以下SQL,將資料以create_time欄位倒序查詢,查詢結果如下:
select member_id,create_time from member order by create_time desc;
                                查詢結果

                                                                          查詢結果