2016-06-16 7 views
0

Ich möchte eine Anzeigespalte neu anordnen, so dass die Reihenfolge ohne Lücken sequenziell ist. Ist etwas wie die folgenden möglichWie kann ich eine MySQL-Abfrage mit der Zeilenanzahl aktualisieren

UPDATE foo 
INNER JOIN bar ON foo.barid = bar.id 
SET foo.display = !rowcount! 
WHERE bar.baz = 1 
ORDER BY foo.display; 
+0

Warum die Sequenz speichern? Sie müssen es jedes Mal aktualisieren, wenn sich die Daten in der Tabelle ändern. Wählen Sie die Sequenz on-the-fly –

+0

@juergen d Es erleichtert das Einfügen von Sequenzen beim Bearbeiten der Sequenz. – SystemicPlural

Antwort

1

Wussten Sie das?

UPDATE foo 
INNER JOIN (
    SELECT t2.id, @rowNo := @rowNo + 1 AS rowcount 
    FROM foo t1 
    INNER JOIN bar t2 ON t1.barid = t2.id 
    INNER JOIN (SELECT @rowNo := 0) t 
    WHERE t2.baz = 1 
    ORDER BY t1.display) bar ON foo.barid = bar.id 
SET foo.display = bar.rowcount