Heim  >  Artikel  >  Datenbank  >  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?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-06 04:23:02957Durchsuche

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 diese:

id listID name position
1 1 cheese 0
2 1 chips 1
3 1 bacon 2
4 1 apples 3
5 1 pears 4
6 1 pie 5

Um Birnen vor Chips zu verschieben, können wir die Position aller Elemente dazwischen erhöhen sie um 1.

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 Elemente zwischen Birnen und Chips entsprechend erhöht werden.

An Ordnen Sie jeden Artikel neu an, ersetzen Sie einfach „Birnen“ durch den Namen des Artikels, der verschoben werden soll, und passen Sie die Differenz nach Bedarf an.

Das obige ist der detaillierte Inhalt vonWie ordne ich Datensätze in einer Tabelle mit einer einzelnen SQL-Abfrage neu an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn