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

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

原文地址:https://blog.csdn.net/wwwwei_csdn/article/details/78181197

前言

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

問題描述

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

問題原因

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

做個實驗

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

                               實驗資料
                                                                         實驗資料
  我們執行以下SQL,將資料以create_time欄位倒序查詢,查詢結果如下:
select member_id,create_time frommemberorderby create_time desc;
  • 1
  • 2
                                查詢結果

                                                                          查詢結果

相關推薦

SQLORDER BY排序同時查詢結果排序

原文地址:https://blog.csdn.net/wwwwei_csdn/article/details/78181197前言  資料庫分頁是後臺經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序欄位值相同時,我們得到的查詢結果會是什麼呢?問題描述  資料分

SQLORDER BY排序同時查詢結果是什麼?

簡書 Wwwwei轉載請註明原創出處,謝謝!前言  資料庫分頁是後臺經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序欄位值相同時,我們得到的查詢結果會是什麼呢?問題描述  資料分頁時需要根據資料記錄建立時間create_time欄位倒序,即使用order

SQL語句order by兩個同時排序問題

可能對不少網友來說非常簡單,但是我覺得在一定程度上對我還是有些迷惑之處,下面就通過hibernate中的HQL語句來介紹下這類問題的效果。 首先HQL語句程式碼: FROM Topic t WHERE t.id >2 ORDER BY t.type DESC,t.number DESC

SQL語句order by兩個同時排序

ORDER BY  後可加2個欄位,用英文逗號隔開。 f1用升序, f2降序,SQL該這樣寫 ORDER BY  f1, f2  DESC 也可以這樣寫,更清楚: ORDER BY  f1 AS

mysql SQL語句order by兩個同時排序

ORDER BY  後可加2個欄位,用英文逗號隔開。 f1用升序, f2降序,sql該這樣寫 ORDER BY  f1, f2  DESC 也可以這樣寫,更清楚: ORDER BY  f1

sqlorder by 【以某個排序

ORDER BY 語句用於對結果集進行排序。 再具體的說不清了,我們直接上例子吧。 現在我們有一個表,如下: 例項1 --asc是升序的意思 預設可以不寫 desc是降序 selec

SQL語句】Order by 兩個同時排序

    小編最近在專案中用到了order by 字句排序,並且是根據兩個欄位排序,到網搜尋一翻,果然收穫不少。    order by 可同時排序2個欄位,欄位中間用英文逗號可開。 1、f1用升序

SQL之group by order by 和多的理解和聯想

一. 使用場景: group by field having count(1) >1用來判斷某個欄位是否有重複值,比如下頁想驗證t_external_member表裡面是否有重複的值,使用如下的sql: select * from t_external_member

mysql order by多個排序

MySql Order By 多個欄位 排序規則比如:如要根據ConfigID和MarketID來排序有如下語句:SELECT * FROM TABLE ORDER BY ConfigID, MarketID DESC;那麼結果:分析:其實這個語句等同於:先按照ConfigI

Mysql 【order by 不唯一】與【limit】混用的坑

背景: 分頁查詢排序後的資料,是一個非常常見的業務場景;但當使用不唯一的欄位排序時,分兩頁查詢的資料可能出現同一條資料,並丟失資料! 示例: 同樣的查詢條件,offset不同,竟然取到了同一條

linq/EF/lambda Group by/Order by 多個詳細用法

1)單個欄位Group by: //a.Key型別與a.Province欄位型別一樣 .GroupBy(a => a.Province).Select(a => a.Key).ToList(); 2)多個欄位Group by: //此時返回的資料列表需要

SQL讓某列的作為返回結果的列名 (比如物品,日期,數量)

Declare   @sql   varchar(800)   set   @sql   =   'select   [物品]' select   @sql   =  @sql   + ', sum(case  日期  when   '''+ 日期+'''   then  

mini-datagrid某行的A變了聯動更新B的實現

   1.html程式碼                          <div field="provDay" name="

oracle資料庫計算兩個時間型別的時間差並轉換為合適的時間格式顯示(按時分秒展示)

1.背景    資料庫表名為tablename。其中兩個欄位為startdate(開始時間),closedate(結束時間)。 2.需求    建立試圖,查詢出間隔時間並顯示為自定義的格式。 3.sql語句  select t.*,

ADF:如何實現的轉換並設定內容顏色

1.當建立工程時,先給欄位值添加了Lov,後做其他步驟,如新增VC等,建立好的頁面中會自動實現欄位值根據Lov的轉換,但是如果最後再新增Lov,就不會實現這個效果。 經過研究,發現了其中的原因: 原來,操作順序不同直接導致的結果是在頁面表格中產生的元件不同。

vuejs+elementui為0輸入框不顯示

最近一個專案用的vuejs+elementui實現,發現在修改資訊的時候有欄位值為0時,在文字框中不會顯示出來,但是可以通過vue驗證規則,說明其值確實是為0,只是UI沒有顯示出來。這時需要將有可能為0的欄位重新賦下值,例項如下:that.editDialog.formDat

sql語句order by指定了多個,則怎麼排序

舉個例子吧:order by id desc,time desc先是按 id 降序排列 (優先)如果 id 欄位 有些是一樣的話 再按time 降序排列 (前提是滿足id降序排列)  order by name, age desc  name優先name一樣的話 就按a

mysqlorder by 指定排序

原 mysql中order by 可以指定排序 2017年05月19日 17:01:26 qq_36340642 閱讀數:27528 這裡

mysqlorder by 可以指定排序

mysql表的排序 ORDER BY field1 [ASC [DESC]], [field2…] [ASC [DESC]],… 這裡是想讓它以 num 排序 但是 num=-1的那條資料單獨為最大值 法一:field( field1,val1,val2,…

Mybatis order by 排序失敗的解決方法

在 mybatis 的 xml中,為一個SQL語句配置order by 子句時,需要這個排序的欄位是前端傳遞過來的,而且排序的順序(升序 OR 降序)也是由前端傳遞過來的。對於這種需求,我起初寫成了下面這樣: ORDER BY `#{condition.f