Verwendung:
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
Dies ist nicht ideal, da die Abfrage nach dem num-Wert für jede zurückgegebene Zeile ausgeführt wird. Eine bessere Idee wäre, einen NUMBERS
zu erstellen Tabelle, mit einer einzelnen Spalte, die eine Zahl enthält, die bei Eins beginnt und sich zu einer unverschämt großen Zahl erhöht, und dann die NUMBERS
verbindet und darauf verweist Tabelle auf ähnliche Weise wie im folgenden Variablenbeispiel.
MySQL-Ranking oder dessen Fehlen
Sie können eine Variable definieren, um Pseudo-Zeilennummer-Funktionalität zu erhalten, da MySQL keine Ranking-Funktionen hat:
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
- Der
SELECT @rownum := 0
definiert die Variable und setzt sie auf Null. - Das
r
ist ein Unterabfrage-/Tabellen-Alias, da Sie in MySQL einen Fehler erhalten, wenn Sie keinen Alias für eine Unterabfrage definieren, auch wenn Sie ihn nicht verwenden.
Eine Variable kann in einer MySQL-Ansicht nicht verwendet werden
Wenn Sie dies tun, erhalten Sie den Fehler 1351, weil Sie können aufgrund des Designs keine Variable in einer Ansicht verwenden . Das Bug-/Feature-Verhalten ist hier dokumentiert .