MySQL實現用Order By進(jìn)行多參數排序

Time:2016/07/05 09:02:51   Click:

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)參數(幾個參數)相同的情況下在排序。


TAG
TOP

錦江區聚格樂享網絡工作室@2012 版權所有
蜀ICP備12016524号-2

立即咨詢
成(chéng)都(dōu)網站建設,成(chéng)都(dōu)做網站,錦江區聚格樂享網絡工作室
40f13d50b73e104f832ed1b719ae6935