Frage

Ich habe die folgende Tabelle

Id   Value
1     3
1     12
1     67
2     7
2     99
5     30
5     33
5     4
5     87
5     12
5     1

Ich mag es zu aktualisieren, um diese Tabelle zu haben.

Id  UniqueIdBySubSet    Value
1           1             3
1           2             12
1           3             67
2           1             7
2           2             99
5           1             30
5           2             33
5           3             4
5           4             87
5           5             12
5           6             1

Ich fand die perfekten Gewinde auf SO, aber es war für MSSQL. Ich benutze MySQL 4.1.10.

Der andere Thread finden Sie hier: Generieren von Sequenzen, die für Teilmengen einer Tabelle .

Hat jemand weiß, wie ich das tun kann in MySQL?

Danke, Jean-Francois

War es hilfreich?

Lösung

SET  @r := 0;
SET  @id := 0;
UPDATE  mytable m
SET     m.UniqueIdBySubSet = IF(@id = id, @r := @r + 1, @r := (@id := id) - id)
ORDER BY
        id, value;

Andere Tipps

Schreiben Sie eine schnelle Skript, es zu tun. Es sollte weniger als 10 Zeilen Code in php.

Ich glaube, Sie werden feststellen, dieser Artikel nützlich. Kurz gesagt:. Sie es in genau einer Abfrage nicht tun können, aber man kann es in zwei tun (laden Sie Ihre Daten in eine neue Tabelle, und führen Sie eine Insert-Anweisung)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top