mysql - example - sql order by multiple




Come ordinare 1,2,3 non 1, 10, 11, 12 in mySQL (4)

Il seguente codice viene emesso nell'ordine di 1, 10, 11, 12 di id.

Voglio renderlo 1,2,3,4 ...

Qualcuno potrebbe dirmi cosa dovrei fare per favore.

$Q = $this->db->query('SELECT P.*, C.Name AS CatName FROM products AS P LEFT JOIN categories C ON C.id = P.category_id');

Grazie in anticipo.


Assicurati che la colonna che contiene 1,2,3,4 sia di tipo INT , se è TEXT, non otterrai l'ordine numerico, ma ciò che descrivi 1, 10, 11, 2, 22, 23, 31, ecc;

E come altri menzionati, usa ORDER BY


Bene, non stai impostando alcuna clausola ORDER BY .


Innanzitutto, aggiungi un ordine per clausola alla fine:

ORDER BY category_id

Se category_id è una stringa, devi trattarla come un numero intero. Ci sono alcuni modi per farlo. Di solito aggiungo uno zero. Puoi anche lanciarlo.

ORDER BY category_id + 0

Puoi fare un cast esplicito facendo:

ORDINA PER CAST (category_id AS UNSIGNED INTEGER)

Ma dovresti riconsiderare il layout del tuo database in quanto un campo contenente solo valori numerici dovrebbe essere anche di un tipo numerico.

I migliori auguri, Fabian







sql-order-by