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!