2016-09-05 51 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,因为它是默认的排序。