網(wǎng)站界面設(shè)計(jì)總結(jié)活動(dòng)策劃
mysql排序之if(isnull(字段名),0,1),字段名 或者 if(isnull(字段名),1,0),字段名
默認(rèn)情況下,MySQL將null算作最小值。如果想要手動(dòng)指定null的順序,可以這樣處理:
- 將null強(qiáng)制放在最前
//null, null, 1,2,3,4(默認(rèn)就是這樣)
SELECT * FROM 表名 ORDER BY if(isnull(字段名),0,1),字段名 ASC
//null, null, 4,3,2,1
SELECT * FROM 表名 ORDER BY if(isnull(字段名),0,1),字段名 DESC
- 將null強(qiáng)制放在最后
//1,2,3,4,null,null
SELECT * FROM 表名 ORDER BY if(isnull(字段名),1,0),字段名 ASC// 4,3,2,1,null,null
SELECT * FROM 表名 ORDER BY if(isnull(字段名),1,0),字段名 DESC
- 解釋
以 if(isnull(字段名),0,1) , 字段名 ASC 為例
- 將該字段根據(jù)是否為 null 值分成兩部分,值為 null 行相當(dāng)于得到了一個(gè)隱含的排序?qū)傩?,值為非 null
的行相當(dāng)于得到了一個(gè)隱含的排序?qū)傩?。 - 先根據(jù)這一隱含屬性進(jìn)行排列,所以排序字段為null的那些行(隱含排序?qū)傩?#xff09;會(huì)在最前。然后其他非null的行按照ASC或者DESC排序