Как использовать номер строки в sqlite
вот мой запрос, приведенный ниже.
select * from data where value = "yes";
мой идентификатор-автоматическое приращение, и ниже приведен результат данного запроса.
id || value
1 || yes
3 || yes
4 || yes
6 || yes
9 || yes
как использовать ROW_NUMBER в sqlite? Чтобы я мог получить результат, который приведен ниже.
NoId || value
1 || yes
2 || yes
3 || yes
4 || yes
5 || yes
ROW_NUMBER как NoId.
3 ответов
попробуйте этот запрос
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.0 добавит поддержку оконных функций
2018-09-00 (3.25.0)
- добавить поддержку оконных функций
функция window-это специальная функция SQL, в которой входные значения берутся из "окна" одной или нескольких строк в результирующем наборе инструкции SELECT.
SQLite в поддерживает следующие 11 встроенных оконных функций:
функции row_number()
номер строки в текущем разделе. Строки нумеруются начиная с 1 в порядке, определенном предложением ORDER BY в определении окна, или в произвольном порядке.
поэтому ваш запрос может быть переписан как:
select *, ROW_NUMBER() OVER(ORDER BY Id) AS NoId
from data
where value = "yes";
Я немного исправился с fiddleanswer и получил точно результат, как ожидалось
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