MySQL: Bandera azar Filas

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Febrero 14th, 2010, 8:31 pm

Yo empecé con este

MYSQL Código: [ Select ]
UPDATE table
   SET flag =
      CASE
         WHEN id IN (SELECT id FROM table ORDER BY RAND() LIMIT 3) THEN 1
         ELSE 0
      END;
  1. UPDATE table
  2.    SET flag =
  3.       CASE
  4.          WHEN id IN (SELECT id FROM table ORDER BY RAND() LIMIT 3) THEN 1
  5.          ELSE 0
  6.       END;


que conducen al error

Código: [ Select ]
ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


Así que saqué el límite y se presentó con este error

Código: [ Select ]
ERROR 1093 (HY000): You can't specify target table 'table' for update in FROM clause


Tenga en cuenta este cuadro nunca se puede tener más de 50 filas en un momento y luego nunca más de un par de cientos en un caso extremo, por lo que Im no preocupado por la "ORDER BY RAND ()" y cualquier problema de rendimiento.

Básicamente Im tratando de pabellón N filas después de cambio de pabellón de todas las filas con una consulta para que pueda un trabajo de configuración de cron para hacerlo cada día.
Strong with this one, the sudo is.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Febrero 14th, 2010, 8:31 pm

  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Febrero 14th, 2010, 9:22 pm

Después de encontrar este comentario por ¿Eres mortal en las páginas del manual de MySQL, junto con este artículo por Xaprb Se me ocurrió esto, que parece funcionar hasta ahora para mi mesa bastante pequeña.

MYSQL Código: [ Select ]
UPDATE table1
   SET flag = CASE WHEN id IN
      (
         SELECT id FROM
         (
            SELECT *
               FROM table1 AS table2
               ORDER BY RAND()
               LIMIT 3
         ) AS table3
      )
      THEN 1
      ELSE 0
   END;
  1. UPDATE table1
  2.    SET flag = CASE WHEN id IN
  3.       (
  4.          SELECT id FROM
  5.          (
  6.             SELECT *
  7.                FROM table1 AS table2
  8.                ORDER BY RAND()
  9.                LIMIT 3
  10.          ) AS table3
  11.       )
  12.       THEN 1
  13.       ELSE 0
  14.    END;
Strong with this one, the sudo is.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Febrero 14th, 2010, 9:54 pm

Yo sabía que ibas a hablar con usted tan pronto como vi su post y no encontrar nada en Google :lol:

¿Cuáles son exactamente las banderas? El manual de referencia de MySQL, no parece que decirme...o no puedo encontrar el justo ahí...
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Febrero 14th, 2010, 10:03 pm

Las banderas no tienen nada que ver con MySQL exactamente, lo que pasa es que tiene una columna en esta tabla que uso como un verdadero / falso bandera para decirle al script si se debe incluir cada fila al hacer algo o no.

En este caso particular, soy marcar filas en una tabla de la categoría que debe incluirse como "destacado" categorías en el índice de sitio. En mi caso la columna de marca es en realidad el nombre "soi" para "mostrar en el índice", pero parecía mejor marca para comenzar con el tema. :)
Strong with this one, the sudo is.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Febrero 14th, 2010, 10:30 pm

Tan...SET bandera ...significa column_flag SET?

El bandera es una columna? Ni una palabra clave MySQL? Como CREATE TRIGGER?
"Bring forth therefore fruits meet for repentance:" Matthew 3:8
  • joebert
  • Sledgehammer
  • Genius
  • No Avatar
  • Registrado: Feb 10, 2004
  • Mensajes: 13455
  • Loc: Florida
  • Status: Offline

Nota Febrero 14th, 2010, 10:42 pm

Exactamente, aunque ahora me tienes que desee comprobar el manual para hacer BANDERA seguro no es una palabra reservada. :scratchhead:

Código: [ Select ]
mysql> help flag;

Nothing found
Please try to run 'help contents' for a list of all accessible topics
  1. mysql> help flag;
  2. Nothing found
  3. Please try to run 'help contents' for a list of all accessible topics


No, parece que soy seguro. :D
Strong with this one, the sudo is.
  • Bogey
  • Bogey
  • Genius
  • Avatar de Usuario
  • Registrado: Jul 14, 2005
  • Mensajes: 8211
  • Loc: USA
  • Status: Offline

Nota Febrero 14th, 2010, 10:47 pm

Bien que...Supongo que estaba buscando las cosas mal, y por eso no podía ser capaz de ayudar de todos modos :lol:

Me alegro de que tengo muy bien y estoy feliz que he aprendido algo útil :) Gracias
"Bring forth therefore fruits meet for repentance:" Matthew 3:8

Publicar Información

  • Total de mensajes en este tema: 7 mensajes
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 172 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© 2011 Unmelted, LLC. Ozzu® es una marca registrada de Unmelted, LLC