Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/04/2015, 05:57
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: 17 años
Puntos: 2658
Respuesta: La PRIMERA VEZ ES INOLVIDABLE

Cita:
Iniciado por superweb360 Ver Mensaje
Código SQL:
Ver original
  1. SELECT *
  2. FROM tbl_banners
  3. WHERE id = 1
  4.  
  5. UNION
  6.  
  7. SELECT *
  8. FROM tbl_banners
  9. WHERE id <> 1
  10. ORDER BY RAND()
La idea básica es esa, pero esa query no dejaría necesariamente el primer registro encontrado en el primer lugar, ya que el ORDER BY, como los GROUP BY que se pudiesen poner, aplican sobre el restultado total, lo que modificaría la tabla obtenida.
Para que fucione correctamente, tal como superweb360 propone, en realidad hay que transformar la segunda en una tabla derivada, y además usar UNION ALL, para evitar ordenamientos implicitos:
Código SQL:
Ver original
  1. SELECT *
  2. FROM tbl_banners
  3. WHERE id = 1
  4. UNION ALL
  5. SELECT *
  6. FROM
  7.     (SELECT *
  8.     FROM tbl_banners
  9.     WHERE id <> 1
  10.     ORDER BY RAND()) T1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)