Utiliser :
SELECT t.id,
t.variety,
(SELECT COUNT(*) FROM TABLE WHERE id < t.id) +1 AS NUM
FROM TABLE t
Ce n'est pas une manière idéale de le faire, car la requête pour la valeur numérique s'exécutera pour chaque ligne renvoyée. Une meilleure idée serait de créer un NUMBERS
table, avec une seule colonne contenant un nombre commençant à un qui s'incrémente jusqu'à un nombre outrageusement grand, puis rejoignez et référencez les NUMBERS
tableau d'une manière similaire à l'exemple de variable qui suit.
Classement MySQL, ou son absence
Vous pouvez définir une variable afin d'obtenir la fonctionnalité de pseudo-numéro de ligne, car MySQL n'a aucune fonction de classement :
SELECT t.id,
t.variety,
@rownum := @rownum + 1 AS num
FROM TABLE t,
(SELECT @rownum := 0) r
- Le
SELECT @rownum := 0
définit la variable et la met à zéro. - Le
r
est un alias de sous-requête/table, car vous obtiendrez une erreur dans MySQL si vous ne définissez pas d'alias pour une sous-requête, même si vous ne l'utilisez pas.
Impossible d'utiliser une variable dans une vue MySQL
Si vous le faites, vous obtiendrez l'erreur 1351, car vous ne pouvez pas utiliser une variable dans une vue pour des raisons de conception . Le comportement bogue/fonctionnalité est documenté ici .