Voici ma requête donnée ci-dessous.
select * from data where value = "yes";
Mon identifiant est incrémentation automatique et en dessous il y a le résultat d'une requête donnée.
id || value
1 || yes
3 || yes
4 || yes
6 || yes
9 || yes
Comment utiliser ROW_NUMBER dans sqlite? Pour que je puisse obtenir le résultat qui est donné ci-dessous.
NoId || value
1 || yes
2 || yes
3 || yes
4 || yes
5 || yes
ROW_NUMBER AS NoId.
Essayez cette requête
select id, value, (select count(*) from tbl b where a.id >= b.id) as cnt
from tbl a
| id | value | cnt |
--------------------
| 1 | yes | 1 |
| 3 | yes | 2 |
| 4 | yes | 3 |
| 6 | yes | 4 |
| 9 | yes | 5 |
SQLite version 3.25. ajoutera la prise en charge des fonctions de fenêtre
2018-09-15 (3.25.0)
- Ajout de la prise en charge des fonctions de fenêtre
Une fonction de fenêtre est une fonction SQL spéciale où les valeurs d'entrée sont extraites d'une "fenêtre" d'une ou plusieurs lignes dans le jeu de résultats d'une instruction SELECT.
SQLite prend en charge les 11 fonctions de fenêtre intégrées suivantes:
row_number ()
Numéro de la ligne dans la partition actuelle. Les lignes sont numérotées à partir de 1 dans l'ordre défini par la clause ORDER BY dans la définition de la fenêtre, ou dans un ordre arbitraire sinon.
Ainsi, votre requête pourrait être réécrite comme suit:
select *, ROW_NUMBER() OVER(ORDER BY Id) AS NoId
from data
where value = "yes";
MISE À JOUR: sqlite3 version 3.25 prend désormais en charge les fonctions de fenêtre, notamment:
row_number () over (ordre par id)
J'ai un peu réparé avec fiddleanswer et obtenu exactement le résultat attendu
select id, value ,
(select count(*) from data b where a.id >= b.id and b.value='yes') as cnt
from data a where a.value='yes';
result
1|yes|1
3|yes|2
4|yes|3
6|yes|4
9|yes|5