Reihe Rang in einer MySQL-Ansicht
Brauche ich eine Ansicht erstellen, die automatisch fügt virtuelle Zeile in der Ergebnis. die Grafik hier völlig zufällig ist alles, was ich will, zu erreichen, ist der letzten Spalte werden dynamisch erstellt.
> +--------+------------+-----+
> | id | variety | num |
> +--------+------------+-----+
> | 234 | fuji | 1 |
> | 4356 | gala | 2 |
> | 343245 | limbertwig | 3 |
> | 224 | bing | 4 |
> | 4545 | chelan | 5 |
> | 3455 | navel | 6 |
> | 4534345| valencia | 7 |
> | 3451 | bartlett | 8 |
> | 3452 | bradford | 9 |
> +--------+------------+-----+
Abfrage:
SELECT id,
variety,
SOMEFUNCTIONTHATWOULDGENERATETHIS() AS num
FROM mytable
- Mögliche Duplikate von ROW_NUMBER() in MySQL
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden:
Es ist nicht eine ideale Art und Weise, dies zu tun, weil die Abfrage für die num-Wert ausgeführt wird, für jede Zeile zurückgegeben. Eine bessere Idee wäre eine
NUMBERS
Tabelle mit einer einzigen Spalte mit einer Nummer beginnend bei eins erhöht, um eine unverschämt große Zahl, und dann join & Verweis auf dieNUMBERS
Tisch in einer ähnlichen Weise wie die variable Beispiel, das folgt.MySQL-Ranking, oder deren Fehlen
Können Sie eine variable definieren, um Pseudo Zeilennummer Funktionalität, denn MySQL hat keine ranking-Funktionen:
SELECT @rownum := 0
definiert die variable, und setzt ihn auf null.r
ist eine Unterabfrage/Tabellen-alias, da erhalten Sie eine Fehlermeldung in MySQL, wenn Sie nicht definieren eines alias für eine Unterabfrage, auch wenn Sie es nicht verwenden werden.Nicht Verwenden können, Eine Variable in einer MySQL View
Wenn Sie dies tun, erhalten Sie die 1351 Fehler, weil Sie können nicht verwenden Sie eine variable in einer Ansicht durch design. Die bug/feature-Verhalten ist hier dokumentiert.
Oracle hat eine rowid pseudo-Spalte. In MySQL, müssen Sie möglicherweise zu gehen hässlich:
Diese Abfrage ist aus der Spitze von meinem Kopf und ungetestet, so nehmen Sie es mit einem Körnchen Salz. Auch, es wird davon ausgegangen, dass Sie möchten, um die Anzahl der Zeilen, die nach einigen Kriterien Sortieren (- id in diesem Fall), sondern der willkürlichen Nummerierung gezeigt, in der Frage.
(SELECT COUNT(*) FROM tbl WHERE t.id < id) + 1 AS num
- COUNT doesn ' T nehmen eine SELECT-Anweisung als parameter: dev.mysql.com/doc/refman/5.1/en/...