Gunta писал(а):
Запрос должен быть чуть другимЭтот вариант у меня работает . Windows 11 Pro 24H2. Версия sqlite3 3.49.1

В SQLite можно использовать подзапрос или оконную функцию `ROW_NUMBER()` (если версия SQLite поддерживает оконные функции, начиная с версии **3.25.0**). Вот как это можно сделать:
### 1. **С использованием оконной функции `ROW_NUMBER()` (рекомендуется, если версия SQLite ≥ 3.25.0):**
```sql
SELECT
ROW_NUMBER() OVER (ORDER BY name) AS номер_по_порядку,
name,
city
FROM myTable;
```
Этот запрос добавит нумерацию строк, отсортированных по столбцу `name`.
---
### 2. **С использованием подзапроса (подходит для всех версий SQLite):**
Если у вас старая версия SQLite, которая не поддерживает оконные функции, можно использовать подзапрос для нумерации строк:
```sql
SELECT
(SELECT COUNT(*) FROM myTable t2 WHERE t2.rowid <= t1.rowid) AS номер_по_порядку,
name,
city
FROM myTable t1
ORDER BY name;
```
Этот запрос работает следующим образом:
- Подзапрос `(SELECT COUNT(*) FROM myTable t2 WHERE t2.rowid <= t1.rowid)` считает количество строк, у которых `rowid` меньше или равен текущему `rowid`, что и создает нумерацию.
- `ORDER BY name` сортирует строки по столбцу `name`.
---
### 3. **С использованием временной таблицы (альтернативный способ):**
Если вам нужно сохранить порядок, можно создать временную таблицу с нумерацией:
```sql
-- Создаем временную таблицу с нумерацией
CREATE TEMP TABLE temp_table AS
SELECT
ROW_NUMBER() OVER (ORDER BY name) AS номер_по_порядку,
name,
city
FROM myTable;
-- Выбираем данные из временной таблицы
SELECT * FROM temp_table;
-- Удаляем временную таблицу (если больше не нужна)
DROP TABLE temp_table;
```
---
### Пример результата:
Для таблицы `myTable`:
| name | city |
|----------|---------|
| Петров | Москва |
| Иванов | Минск |
| Сидоров | Киев |
| Смирнов | Киров |
| Малевич | Сидней |
Результат запроса будет:
| номер_по_порядку | name | city |
|------------------|----------|---------|
| 1 | Петров | Москва |
| 2 | Иванов | Минск |
| 3 | Сидоров | Киев |
| 4 | Смирнов | Киров |
| 5 | Малевич | Сидней |
---
### Важно:
- Если вы используете `ORDER BY`, убедитесь, что он соответствует вашим требованиям к сортировке.
- Если версия SQLite старая (ниже 3.25.0), используйте подзапрос или временную таблицу.