Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/10/2013, 05:49
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ordernar query por dos condiciones

Yo entiendo la lógica del CASE en un SELECT, no te preocupes. Tengo cierta experiencia con MySQL...

Personalmente, el uso de CASE en un SELECT la considero una solución de programadores, no de DBA. Se procura evitar usar en esa forma porque tiene serios problemas de performance cuando las consultas aplican a tablas más grandes, ya que trata los valores como cadenas de texto, con lo que muchas veces genera demasiado uso de memoria (un "0" y un 0 ocupan diferente cantidad de memoria), además de conversiones implícitas innecesarias.

Es preferible el uso de IF, y no CASE para cosas como lo que quieres.
Algo como:
Código MySQL:
Ver original
  1. SELECT *, IF(fecha` IS NULL, 1, 0) ConFecha, RAND() Aleatorio
  2. FROM usuarios
  3. ORDER BY ConFecha, Aleatorio;

De todos modos es tu decisión.

Nota: El AS es irrelevante, sólo sirve para ensuciar el código y ya no es parte del estandar ANSI SQL. Procura no usarlo.
Sólo se conserva por compatibilidad, pero las directivas de desarrollo en las empresas de software especifican que no se lo use (estoy segur, trabajo en una).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)