{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

SQL中,排序的語法是?正序/倒序如何表示?

XGBCCCXGBCCC 回答0 收藏1
收藏問題

2條回答

callmewhy

callmewhy

回答于2022-06-28 14:28

SQL中的排序要使用關(guān)鍵字order by,后面跟上指定的排序列名稱即可。排序類型分升序和降序,升序?yàn)锳SC,這也是默認(rèn)的類型;降序?yàn)镈ESC。指定的排序列可以有多個(gè),多個(gè)列之間用半角逗號(hào)隔開。這就是基本的排序語法。

但是,看起來非常簡單的排序,其實(shí)里面也大有學(xué)問,以下幾點(diǎn)特別提醒注意:

當(dāng)order by和top配合使用時(shí),返回的記錄數(shù)有時(shí)可能并不是你所希望的

當(dāng)在select子句中用到top謂詞時(shí),一般都是和order by一起配合使用,這是因?yàn)椋褐挥袑ε判蛞院蟮臄?shù)據(jù)提取前N行的值時(shí)才有意義。而當(dāng)top和order by組合使用時(shí),又會(huì)出現(xiàn)一種特殊的情況:如果指定范圍內(nèi)的最后一條記錄有多個(gè)相同值,那么這些值對應(yīng)的記錄也會(huì)被返回,也就是說,最后返回的記錄數(shù)可能會(huì)大于指定的數(shù)量。

如下圖,盡管指定的數(shù)量是4個(gè),但最終的返回記錄數(shù)卻是5。原因就在于,用于排序的列“產(chǎn)品id”的最后一行有相同的兩個(gè)值:

如果在上述語句中不使用order by,則返回的記錄數(shù)正常是4條。

以上情況在MySQL數(shù)據(jù)庫中就不會(huì)出現(xiàn),因?yàn)樗恢С諸op的寫法,它使用的是limit,因此還要注意不同數(shù)據(jù)庫中的差別。

當(dāng)在排序中使用聚合函數(shù)時(shí),必須同時(shí)使用group by子句,盡管這個(gè)聚合函數(shù)可以不出現(xiàn)在select子句中。

例如,要對訂單表中的產(chǎn)品按照數(shù)量合計(jì)倒序排序,可以這樣寫:

盡管select子句中不需要生成數(shù)量的合計(jì)列,但也必須使用group by。只有這樣,order by中才能使用聚合函數(shù)。當(dāng)然,如果在select中加上sum(數(shù)量),輸出的排序結(jié)果會(huì)更直觀一些:

select中的聚合函數(shù)和排序中的聚合函數(shù)未必相同,例如下面的語句,產(chǎn)品名稱雖然是按數(shù)量合計(jì)數(shù)排序,但輸出的卻是單價(jià)中的最高值:

當(dāng)SQL語句中同時(shí)出現(xiàn)where、group by和order by時(shí),where必須排在第一位,group by其次,order by放在最后。

我是人民郵電出版社簽約作者,期待您的關(guān)注,歡迎留言和我交流,謝謝!

評論0 贊同0
  •  加載中...
wean

wean

回答于2022-06-28 14:28

前面查詢就不寫了,不同的數(shù)據(jù)庫有略微差別。排序用關(guān)鍵字 order by來表示,后面跟要進(jìn)行排序的字段名或鍵值,其后用asc表示升序,desc表示倒序。可以有多個(gè)排序字段,用逗號(hào)分隔。完整的例子: select field1,field2,field3 from sometable order by field1 asc,field2 desc

評論0 贊同0
  •  加載中...

最新活動(dòng)

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關(guān)注的人
向幫助了您的網(wǎng)友說句感謝的話吧!
付費(fèi)偷看金額在0.1-10元之間
<