- 企業官網怎麼(me)就(jiù)成(chéng)了企業的擺設? (62203)
- 企業網站建設最常見誤區分析 (60391)
- 關于網站關鍵詞選擇的一些技巧 (60234)
- 論網站頁面(miàn)靜态化和僞靜态的區别 (58287)
- 熱烈祝賀香港保險網制作完成(chéng)并交付上線 (57765)
MySQL實現用Order By進(jìn)行多參數排序
select * from table order by 參數1 , 參數2 DESC …… limit ?
在做多字段的排序的時(shí)候我們經(jīng)常會(huì)會(huì)用到該語句。
這(zhè)裡(lǐ)的參數1 是按照 ASC 排序所以就(jiù)可以省略,參數2 是按照DESC排序,由于
大多數 where 後(hòu)面(miàn)的過(guò)濾條件是從右到左,而Order by後(hòu)面(miàn)的順序應該怎麼(me)的?
這(zhè)裡(lǐ)的順序是從參數1,參數2這(zhè)麼(me)開(kāi)始排序的,是從左到右。
比如:把參數1的排完,在排序參數2,但參數2的排序并非對(duì)參數1的數據重新排序,
而是對(duì)參數1相同的數據進(jìn)行排序。
誤解:
很多人想得到100個最小的x,但想把這(zhè)100個數據按照y從小到大的排序,于是就(jiù)寫這(zhè)樣(yàng)
的SQL語句
select * from table x ASC,y DESC limit 100
這(zhè)就(jiù)是我們理解錯了,這(zhè)裡(lǐ)的y隻是對(duì)排好(hǎo)的x相同的數據進(jìn)行排序,如果這(zhè)100個數據x完全
不同,後(hòu)面(miàn)添加對(duì)y的排序時(shí)是沒(méi)有影響的。這(zhè)裡(lǐ)隻對(duì)x相同的數據進(jìn)行局部的y排序。
變化如下:
1-2 1-2
2-1 2-3
2-3 2-1
3-4 3-4
……
所以多參數排序是從左到右的局部排序,修改的範圍隻有前面(miàn)參數(幾個參數)相同的情況下在排序。