2016-09-05 238 views
1

如何按C,D,A,B和pincode按時間順序排列?輸出訂貨不正確

原始結果:

S Pincode 
== ======= 
A 001 
B 002 
C 003 
D 004 
D 005 
C 006 
B 007 
A 008 

預期結果:

S Pincode 
== ======= 
C 003 
C 006 

D 004 
D 005 

A 001 
A 008 

B 002 
B 007 

代碼:

SELECT 
    id, 
    sector, 
    pincode 

FROM 
    sh_av_spform 

WHERE 

    type='ticket' and 
    status='new' and 
    date(`createdate`) = CURDATE() 

ORDER BY 

    FIELD(sector, 'C','D','A','B') ASC 

limit 5 

上面的SQL,有時會按時間sector

不正確排序pin碼。

無效的輸出我得到如:

S Pincode 
== ======= 
C 003 
C 006 

D 005 
D 004 <<< ??? 

A 001 
A 008 

B 007 
B 002 <<< ??? 

任何人都知道如何解決這一問題?

回答

1

您只需訂購一列。添加第二個太:

SELECT 
    id, 
    sector, 
    pincode 

FROM 
    sh_av_spform 

WHERE 

    type='ticket' and 
    status='new' and 
    date(`createdate`) = CURDATE() 

ORDER BY 

    FIELD(sector, 'C','D','A','B') ASC, 
    pincode ASC 
1

您不包括pincodeORDER BY條款:

ORDER BY 
    FIELD(sector, 'C','D','A','B') , pincode 

無需編寫ASC,因爲它是默認的排序。