2016-09-05 12 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 

コード:SQLの上

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 

、時々与え、正常時系列sector

でPINコードを命じません

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

D 005 
D 004 <<< ??? 

A 001 
A 008 

B 007 
B 002 <<< ??? 

誰もがこの問題を解決する方法を知っている:私のような取得

無効な出力?

答えて

1

あなたは1列で注文します。あなたのORDER BY句でpincodeが含まれていませんでした

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

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

それがデフォルトの順序であるとしてASCを記述する必要がありませんあまりに秒1を追加します。

関連する問題