2016-09-05 4 views
1

Wie wird das Ergebnis chronologisch nach C, D, A, B und pincode geordnet?Der Ausgang ist nicht richtig bestellt

Original-Ergebnis:

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

Erwartetes Ergebnis:

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

D 004 
D 005 

A 001 
A 008 

B 002 
B 007 

Code:

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 

über SQL, gibt manchmal nicht richtig bestellt pincode in chronologischen sector

Ungültige Ausgang i so erhalten, wie:

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

D 005 
D 004 <<< ??? 

A 001 
A 008 

B 007 
B 002 <<< ??? 

Wer weiß, wie dieses Problem beheben?

Antwort

1

Sie bestellen nur in einer Spalte. Fügen Sie die zweite zu:

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

Keine Notwendigkeit zu schreiben ASC wie es die Standardreihenfolge ist:

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

Sie nicht pincode in Ihrer ORDER BY Klausel enthalten habe.