Pregunta

Tengo una consulta como la siguiente:

update  table
set     status = 1
where   status = 2;     

pero yo sólo me gustaría hacer esto a la parte superior 400. He intentado añadir un 'límite de 0, 400' (como lo haría en una consulta), pero eso no funcionó. Hice un poco de búsqueda y MySQL no parece compatible con el comando TOP (n) como servidor SQL hace.

Cualquier idea de lo que me gustaría hacer esto?

Editar: para referencia futura, que estaba usando el siguiente estilo para selecciona, que funcionaba bien:

select  * 
from    table
where   ... limit 0, 400;

pero en la actualización que no funcionaría con el "0", por la razón que sea. Me parece que es un comportamiento inconsistente y ambigua, pero bueno.

¿Fue útil?

Solución

UPDATE  table
SET     status = 1
WHERE   status = 2
ORDER BY id
LIMIT 400

Nos registramos en MySQL 5.2.0-falcon-alpha-community-nt-log, confirmó trabajo.

En su caso se trata de 0 en LIMIT 0, 400 que no funciona.

No se puede utilizar el enlace inferior en UPDATE de LIMIT.

Otros consejos

Prueba esto:

update  table
set     status = 1
where   status = 2
LIMIT 400

También se puede poner una orden por la cláusula

update  table
set     status = 1
where   status = 2
ORDER BY id
LIMIT 400
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top