Как правильно работать с ROW_NUMBER()?

подскажите, пожалуйста, как реализовать независимую нумерацию.

У меня есть таблица task, допустим с 3 полями: id, name, task_id

Всего в таблице хранится 10 заданий, 3 из которых - мои.

На определённой странице вывожу только свои задания, но мне нужно узнать их номер в списке всех заданий.

Пример:

id, name, task_id
1   name1 8
2   name2 85
3   name3 6
4   name4 74
5   name5 15
6   name6 2
7   name7 1

Мои задания - 1, 4, 7.

Значит при правильном запросе у меня должно получиться что-то вроде:

num, id, name,  task_id
4     1  name1  74
2     4  name4  85
7     7  name7  1

ORDER BY - task_id DESC

MySQL (ver. 8.0.20)


Ответы (2 шт):

Автор решения: Yitzhak Khabinsky

До сих пор не ясно, как вы пришли к желаемому результату.

dbfiddle

SQLfiddle

-- DDL and sample data population, start
CREATE TABLE tbl (id INT PRIMARY KEY, name NVARCHAR(30), task_id INT);
INSERT tbl (id, name, task_id)
VALUES
(1, 'name1' ,8 ),
(2, 'name2' ,85),
(3, 'name3' ,6 ),
(4, 'name4' ,74),
(5, 'name5' ,15),
(6, 'name6' ,2 ),
(7, 'name7' ,1 );
-- DDL and sample data population, end

SELECT *
   , ROW_NUMBER() OVER (ORDER BY id) AS num
FROM tbl
WHERE id IN (1, 4, 7);

результат

+----+-------+---------+-----+
| id | name  | task_id | num |
+----+-------+---------+-----+
|  1 | name1 |       8 |   1 |
|  4 | name4 |      74 |   2 |
|  7 | name7 |       1 |   3 |
+----+-------+---------+-----+
→ Ссылка
Автор решения: Герман Борисов

Сначала нумеруем все, затем выбираем нужные:

SELECT num, id, name, task_id
FROM(
  SELECT id, name, task_id, ROW_NUMBER() OVER (ORDER BY task_id desc) AS num
  FROM task
) T
WHERE id IN (1, 4, 7);
→ Ссылка