Tengo: SELECT * FROM listatareas ORDER BY id DESC
Necesito Ordenar por dos criterios....id y status
quiero que me acomode primero
por id y luego...
cuando status == "NULL"
y hasta abajo status == "1"
como lo tengo ke hacer?
| |||
Ordenar por dos criterios....id y status Tengo: SELECT * FROM listatareas ORDER BY id DESC Necesito Ordenar por dos criterios....id y status quiero que me acomode primero por id y luego... cuando status == "NULL" y hasta abajo status == "1" como lo tengo ke hacer? |
| |||
Respuesta: Ordenar por dos criterios....id y status Lo que entendí es que querés ordenar por id en forma ascendiente, y status en forma descendiente, pero con los valores NULL apareciendo siempre como el mayor. ORDER BY admite múltiples parámetros. Para ordenar de la manera que querés, basta con hacer ORDER BY id, status DESC. El problema que vas a tener es que NULL es siempre el menor, por lo que al ordenar de manera descendiente te va a aparecer al final de la lista, y no al principio. Para resolver esto se usa una especie de 'hack': Representando los valores en una recta, los NULL siempre tienden a menos infinito, por lo que invirtiendo el signo de status y luego invirtiendo la posición de la recta, los valores de status quedan en su posición original, pero los NULL ahora tienden a más infinito. Teniendo el data set:
Código MySQL:
Ver original Probamos ordenar primero id en forma ascendiente, y luego status en forma descendiente
Código MySQL:
Ver original El problema es que las celdas con valores NULL aparecen abajo de todo. Esto se soluciona poniendo un menos antes del campo a ordenar e invirtiendo el orden
Código MySQL:
Ver original Como ahora tenemos dos ORDER BY ... ASC, podemos agruparlos con una coma |
Etiquetas: |