web-dev-qa-db-fra.com

Comment utiliser ROW_NUMBER dans sqlite

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.

26
Abox LsrKdz

Essayez cette requête

select id, value, (select count(*) from tbl b  where a.id >= b.id) as cnt
from tbl a

VIOLON

| id | value | cnt |
--------------------
|  1 |   yes |   1 |
|  3 |   yes |   2 |
|  4 |   yes |   3 |
|  6 |   yes |   4 |
|  9 |   yes |   5 |
22
Meherzad

SQLite version 3.25. ajoutera la prise en charge des fonctions de fenêtre

2018-09-15 (3.25.0)

  1. Ajout de la prise en charge des fonctions de fenêtre

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";

démo db-fiddle.com

11
Lukasz Szozda

MISE À JOUR: sqlite3 version 3.25 prend désormais en charge les fonctions de fenêtre, notamment:

row_number () over (ordre par id)

Documentation SQLITE

2
v12golfcart

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
2
user3198319