記錄一次SQL語句ORDER BY 排序失效的問題

2021-10-11 14:34:54 字數 1073 閱讀 3043

我在工作中用到了借助sql實現order by的多字段排序,但由於對 sql 的語法了解不夠導致踩到乙個坑,這裡做一下記錄.

我的sql 類似於下面這樣:

select

*from table1 order

by create_time,id desc

我對這條sql的期望是首先按照 create_time 進行降序排序,如果 create_time 相同的話,則按照 id 進行降序排序.但是如上面所說的,我對應的該條sql 並沒有按照我的想法實現排序.

如上圖所見,sql的執行結果並沒有按照我的預期所顯示.經過一番思考,我明白了我的理解**出了問題.實際我所寫的其實是一種排序的縮寫即:

select

*from table1 order

by create_time,id desc

;-- 等價於

select

*from table1 order

by create_time asc

,id desc

;

即我沒有指定create_time欄位的排序方式,在sql 解析的過程中,並不是按照最後面指定的排序方式來為兩個欄位做排序的,因此這裡我指定兩個字段希望能夠對這兩個欄位做降序排序,但是最終卻是對第乙個字段create_time做了公升序排序,對第二個字段id做了降序排序,導致我的**與預期結果不符.因此,正確的sql應該是

select

*from table1 order

by create_time desc

,id desc

;

這裡總結一下,我之所以理解失誤有可能是與group by對多字段分組處理方式,我以為order by的實現邏輯相同.

sql語句order by多條件排序第乙個條件

記錄一次SQL查詢語句

以前發現比較經典的句子,都是記錄在電腦上,我今天想搬到部落格上,在我看來,寫部落格真的是一件非常頭疼的事,它是內心的一道坎,我必須得跨過它。1 create table t jeff 2 id int notnull 3 vinnumber varchar 255 default null 4 ch...

記錄一次sql優化過程

對於我這種剛剛進入dba行業的人來說sql優化是一件很難的事情。所以今天看了一下別人優化的過程順手記錄的一筆。select distinct vi.policy no from odsdata.policy extend info ei,policy vehicle info vi,policy b...

一次SQL慢查詢記錄

前段時間,某個深夜,突然接到專案的告警 專案執行異常,檢視告警資訊是由於專案資料庫cpu使用率接近100 導致的。為此深夜中忙活了一陣,當個教訓,且記錄一次。現象 服務資料庫cpu使用率接近100 一直居高不下。原因 sql語句使用不合理的索引,導致資料庫中大量資料的排序,大資料量的記錄排序消耗盡c...