當SQL中ORDER BY待排序欄位值相同時,查詢結果排序
前言
資料庫分頁是後臺經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序欄位值相同時,我們得到的查詢結果會是什麼呢?
問題描述
資料分頁時需要根據資料記錄建立時間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
查詢結果
相關推薦
當SQL中ORDER BY待排序欄位值相同時,查詢結果排序
原文地址:https://blog.csdn.net/wwwwei_csdn/article/details/78181197前言 資料庫分頁是後臺經常要使用的技術手段,有時候進行資料庫查詢會根據業務需要對某一欄位排序,那麼當待排序欄位值相同時,我們得到的查詢結果會是什麼呢?問題描述 資料分
當SQL中ORDER 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
sql中order 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
mysql中order by 指定排序
原 mysql中order by 可以指定排序 2017年05月19日 17:01:26 qq_36340642 閱讀數:27528 這裡
mysql中order 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