Reordenación de registros con una única consulta SQL
En una tabla de alimentos con un campo "Posición" para ordenar su apariencia, un único La consulta SQL puede actualizar varios registros en función de un cambio en un solo registro. Esto es especialmente útil para reordenar elementos dentro de una lista específica.
Supongamos que tenemos una tabla como esto:
id | ID de lista | nombre | posición |
---|---|---|---|
1 | 1 | queso | 0 |
2 | 1 | chips | 1 |
3 | 1 | tocino | 2 |
4 | 1 | manzanas | 3 |
5 | 1 | peras | 4 |
6 | 1 | tarta | 5 |
Para mover peras antes que chips, podemos incrementar la posición de todos los elementos entre ellos en 1.
Sin embargo, la mayoría de las soluciones implican múltiples consultas, lo que puede ser ineficiente. En su lugar, se puede utilizar una única consulta para reordenar los registros:
UPDATE my_table SET position = position CASE WHEN name = 'pears' THEN -3 ELSE 0 END WHERE listID = 1 AND position BETWEEN 1 AND 4;
Esta fórmula garantiza que las peras se muevan a la posición 1 y que todos los elementos entre peras y chips se incrementen en consecuencia.
Para reordenar cualquier elemento, simplemente reemplace 'peras' con el nombre del elemento que se va a mover y ajuste la diferencia según sea necesario.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3