Reordenando registros com uma única consulta SQL
Em uma tabela de itens alimentares com um campo "Posição" para ordenar sua aparência, um único A consulta SQL pode atualizar vários registros com base em uma alteração em um único registro. Isso é especialmente útil para reordenar itens em uma lista específica.
Suponha que temos uma tabela como isto:
id | listID | nome | posição |
---|---|---|---|
1 | 1 | queijo | 0 |
2 | 1 | chips | 1 |
3 | 1 | bacon | 2 |
4 | 1 | maçãs | 3 |
5 | 1 | peras | 4 |
6 | 1 | torta | 5 |
Para mover as peras antes das fichas, podemos incrementar a posição de todos os itens entre elas em 1.
No entanto, a maioria das soluções envolve múltiplas consultas, o que pode ser ineficiente. Em vez disso, uma única consulta pode ser usada para reordenar os 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 garante que as peras se movam para a posição 1 e todos os itens entre as peras e as batatas fritas sejam incrementados de acordo.
Para reordenar qualquer item, simplesmente substitua 'peras' pelo nome do item a ser movido e ajuste a diferença conforme necessário.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3