Datensätze mit einer einzigen SQL-Abfrage neu anordnen
In einer Tabelle mit Lebensmitteln mit einem Feld „Position“, um deren Aussehen zu ordnen, ein einziger Eine SQL-Abfrage kann mehrere Datensätze basierend auf einer Änderung an einem einzelnen Datensatz aktualisieren. Dies ist besonders nützlich, um Elemente innerhalb einer bestimmten Liste neu anzuordnen.
Angenommen, wir haben eine Tabelle wie dies:
id | listID | Name | Position |
---|---|---|---|
1 | 1 | Käse | 0 |
2 | 1 | Chips | 1 |
3 | 1 | Speck | 2 |
4 | 1 | Äpfel | 3 |
5 | 1 | Birnen | 4 |
6 | 1 | Kuchen | 5 |
An Wenn wir Birnen vor Chips verschieben, können wir die Position aller Elemente dazwischen um 1 erhöhen.
Die meisten Lösungen beinhalten jedoch mehrere Abfragen, was ineffizient sein kann. Stattdessen kann eine einzige Abfrage verwendet werden, um die Datensätze neu anzuordnen:
UPDATE my_table SET position = position CASE WHEN name = 'pears' THEN -3 ELSE 0 END WHERE listID = 1 AND position BETWEEN 1 AND 4;
Diese Formel stellt sicher, dass Birnen an Position 1 verschoben werden und alle Artikel zwischen Birnen und Chips entsprechend erhöht werden.
Um jeden Artikel neu anzuordnen, einfach Ersetzen Sie „Birnen“ durch den Namen des zu verschiebenden Elements und passen Sie die Differenz nach Bedarf an.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3