2010-10-19 15 views
14

Ho la colonna color nella tabella MySQL che tipo è ENUM('RED', 'YELLOW', 'MY_COLOR', 'BLACK') e un'altra colonna name il cui tipo è VARCHAR(30).Come ordinare la colonna ENUM nel database MySQL?

Vorrei ottenere tutte le righe della tabella nel seguente ordine:

  • YELLOW righe prima, in ordine di name
  • RED filari ultima, in ordine di name
  • In mezzo, tutte le altre righe , ordinati per name

È possibile effettuare questo tipo di ordinamento in 1 query?

risposta

26

Usa:

ORDER BY CASE color 
      WHEN 'YELLOW' THEN 1 
      WHEN 'RED' THEN 3 
      ELSE 2 
     END, name 
+0

Grazie mille !! –

1

Questo funziona bene con mysql. Ma per h2 DB introduce un errore causato da: org.h2.jdbc.JdbcSQLException: ordine per espressione "CASEWHEN ((color = 'GIALLO'), 1, CASEWHEN ((color = 'RED'), 3))" deve essere nella lista dei risultati in questo caso; Istruzione SQL:

Per evitare l'errore, aggiungere lo stmt "CASEWHEN ((color = 'YELLOW'), 1, CASEWHEN ((color = 'RED'), 3))" nella clausola select.

Problemi correlati