mysql + top actualización n
-
05-09-2019 - |
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.
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