poner - Cómo ordenar 1,2,3 no 1, 10, 11, 12 en mySQL
ordenar un campo en mysql (6)
El siguiente código da como resultado 1, 10, 11, 12 de id.
Quiero hacerlo 1,2,3,4 ...
¿Alguien podría decirme qué debo hacer por favor?
$Q = $this->db->query(''SELECT P.*, C.Name AS CatName FROM products AS P LEFT JOIN categories C ON C.id = P.category_id'');
Gracias por adelantado.
Asegúrese de que la columna que contiene 1,2,3,4 sea de tipo INT
; si es TEXTO, no obtendrá un orden numérico, sino lo que describe 1, 10, 11, 2, 22, 23, 31, etc.
Y como mencionan otros, usa ORDER BY
Bueno, no estás configurando ninguna cláusula ORDER BY
.
Como se mencionó anteriormente, MySQL no admite la ordenación alfanumérica. Un truco común para resolver esto es el primer orden por longitud:
ORDER BY LENGTH(column_name), column_name
Siempre que la parte no numérica del valor tenga la misma longitud, esto ordenará 1 antes de 10, 10 antes de 100, etc.
Primero, agregue una orden por cláusula al final:
ORDER BY category_id
Si category_id es una cadena, debe tratarlo como un entero. Hay algunas maneras de hacer esto. Normalmente agrego un cero. También puedes lanzarlo.
ORDER BY category_id + 0
Puedes hacer un reparto explícito haciendo:
ORDEN POR CAST (category_id COMO INTEGER NO FIRMADO)
Pero debe reconsiderar el diseño de su base de datos, ya que un campo que solo contiene valores numéricos también debe ser de tipo numérico.
Mis mejores deseos, fabian
Ordene trabajando solo para valores numéricos ( int ), no trabaje para varchar, char
Su category_id debe ser numérico, de lo contrario, debe convertir los valores a números.