以下に私のクエリを示します。
select * from data where value = "yes";
私のIDは自動インクリメントであり、下には特定のクエリの結果があります。
id || value
1 || yes
3 || yes
4 || yes
6 || yes
9 || yes
SqliteでROW_NUMBERを使用する方法は?そのため、以下に示す結果を得ることができます。
NoId || value
1 || yes
2 || yes
3 || yes
4 || yes
5 || yes
ROW_NUMBER AS NoId。
このクエリを試してください
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リリース3.25. はウィンドウ関数のサポートを追加します
2018-09-15(3.25.0)
- ウィンドウ関数のサポートを追加する
ウィンドウ関数 :
ウィンドウ関数は、入力値がSELECTステートメントの結果セット内の1つ以上の行の「ウィンドウ」から取得される特別なSQL関数です。
SQLiteは、次の11の組み込みウィンドウ関数をサポートしています。
row_number()
現在のパーティション内の行の番号。行には、ウィンドウ定義のORDER BY句で定義された順序で、またはそれ以外の任意の順序で、1から始まる番号が付けられます。
したがって、クエリは次のように書き換えられます。
select *, ROW_NUMBER() OVER(ORDER BY Id) AS NoId
from data
where value = "yes";
私はフィドルアンサーをいくらか修正し、期待どおりの結果を得ました
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