Dit zou je er de meeste controle over moeten geven:
order by
case left(positions.colleague_position_id, 1)
when 'A' then 1
when 'F' then 2
when 'T' then 3
when 'S' then 4
when 'C' then 5
else 6
end, positions.colleague_position_id
Dit komt omdat u alle niet-overeenkomende waarden naar de gewenste positie kunt sturen (in dit geval aan het einde). Het field()
functie retourneert 0
voor niet-overeenkomende waarden en plaatst ze bovenaan de resultatenset, zelfs vóór de waarden die beginnen met A
.
Daarnaast kunt u ook bestellen via positions.colleague_position_id
zoals ik deed in het voorbeeld, zodat voor veel positions.colleague_position_id
die met dezelfde letter beginnen, staan ze nog steeds op volgorde.