2012-05-23 16 views
5

Tengo una tabla similar a esta LÍMITE:u offset en una consulta SQL UPDATE

| 0 | X | 
| 1 | X | 
| 2 | X | 
| 3 | Y | 
| 4 | Y | 
| 5 | X | 
| 6 | X | 
| 7 | Y | 
| 8 | Y | 
| 9 | X | 

me gustaría para reemplazar 2 primeras apariciones de X con X1, y luego 4 siguientes apariciones con X2 de manera que la tabla resultante es el siguiente:

| 0 | X1 | 
| 1 | X1 | 
| 2 | X2 | 
| 3 | Y | 
| 4 | Y | 
| 5 | X2 | 
| 6 | X2 | 
| 7 | Y | 
| 8 | Y | 
| 9 | X2 | 

la tabla en cuestión es, por supuesto, mucho más grande y el número de ocurrencias tanto, sería de edición también, así Manual superior no es una solución.

me gustaría hacer algo como esto:

UPDATE table SET column = 'X' WHERE column = 'X2' LIMIT 90, 88

pero por desgracia no parece MySQL al apoyo OFFSET en las consultas de actualización ... ¿Hay alguna manera de hacer esto?

Respuesta

3

Prueba esto:

UPDATE table SET column = 'X1' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 2) as u);

y luego

UPDATE table SET column = 'X2' WHERE id IN(SELECT id FROM (SELECT id FROM table WHERE column = 'X' LIMIT 4) as u);

7

No sé si usted tiene Identificación presentó disponibles en la tabla o no, pero se puede usar donde id ENTRE 88 Y 90, MySQL no admite el desplazamiento en la consulta de actualización, pero puede hacerlo limitando el uso de ENTRE comando