2009-04-07 32 views
6

de la actualización de Tengo una consulta como esta:MySQL + n

update table 
set  status = 1 
where status = 2;  

pero sólo les 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 algunas búsquedas y mysql no parece soportar el comando TOP (n) como lo hace el servidor sql.

¿Alguna idea de cómo haría esto?

de edición: 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. Consideraría este comportamiento inconsistente y ambiguo, pero bueno.

Respuesta

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

registramos en MySQL 5.2.0-falcon-alpha-community-nt-log, confirmó que trabaja.

En su caso es 0 en LIMIT 0, 400 que no funciona.

No puede usar el límite inferior en UPDATE 's LIMIT.

2

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 
+0

Esto actualizaría cada fila debido al punto y coma después del 2. ¿no? –

+0

Creo que el punto y coma está pegado de forma errónea a la consulta original, no tiene sentido aquí. – Quassnoi

+0

sí, eso es un error tipográfico –

Cuestiones relacionadas