iT邦幫忙

0

SQL ORDER排序

  • 分享至 

  • xImage

想詢問各位大大為何ROW_NUMBER()之後的排序會是如下圖
https://ithelp.ithome.com.tw/upload/images/20220214/20120596apkDYYb2sx.jpg
按照CustomerID ROW_NUMBER()過後再按照OrderDate排序,827-830列為何不是

ROW ID OrderID CustomerID OrderDate
77 11076 BONAP 1998-05-06 00:00:00.000
595 11077 RATTC 1998-05-06 00:00:00.000
619 11075 RICSU 1998-05-06 00:00:00.000
686 11074 SIMOB 1998-05-06 00:00:00.000

使用的是北風資料庫,Orders的相關欄位結構如下
https://ithelp.ithome.com.tw/upload/images/20220214/2012059627WqpCLpKs.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
小山丘
iT邦新手 2 級 ‧ 2022-02-14 11:53:24

主要查詢的ORDER BY只有OrderDate,再把ROW ID也加入進去阿
但你的ROW ID只是要排序用途的話,可以直接
ORDER BY OrderDate,CostumerID這樣就好

ice bear iT邦新手 4 級 ‧ 2022-02-14 11:56:33 檢舉

沒加 order by OrderDate的時候 排序就是按照ROW ID了
為何加上之後 ROW ID的順序就亂掉了

小山丘 iT邦新手 2 級 ‧ 2022-02-14 11:58:41 檢舉

因為他已經先用OVER子句裡面的ORDER BY排序完才產生號碼的

小山丘 iT邦新手 2 級 ‧ 2022-02-14 11:59:51 檢舉

但你最後又用ORDER BY OrderDate打亂排序了

0
pilipala
iT邦研究生 5 級 ‧ 2022-02-16 09:53:36

官方文件有提到,要明確指定 Order By 才能確保資料順序喔

SELECT - ORDER BY 子句 (Transact-SQL)

我要發表回答

立即登入回答