„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie ordne ich Datensätze in einer Tabelle mit einer einzelnen SQL-Abfrage neu an?

Wie ordne ich Datensätze in einer Tabelle mit einer einzelnen SQL-Abfrage neu an?

Veröffentlicht am 22.11.2024
Durchsuche:100

How to Reorder Records in a Table with a Single SQL Query?

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:

idlistIDNamePosition
1 1Käse0
21Chips1
31Speck2
41Äpfel3
51Birnen4
61Kuchen 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.

Neuestes Tutorial Mehr>

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