как нумеровать набор результатов из MySQL (другой вариант, чтобы не использовать пользовательские переменные) - PullRequest
0 голосов
/ 21 сентября 2018

Например, создайте этот запрос, чтобы связать всех пользователей и их сообщения

SELECT users.nameUser, posts.namePost
FROM users
JOIN posts ON users.id = posts.user_id;

Он работает нормально, но мне нужно пронумеровать результаты;поэтому я объявил пользовательскую переменную таким образом

SET @counter = 0;

Теперь я использую ее

SELECT (@counter := @counter + 1) AS NP, users.nameUser, posts.namePost
FROM users
JOIN posts ON users.id = posts.user_id;

Но теперь с MySQL 8 и оконными функциями мне нужно использовать другой способ и избегать пользовательских переменных

Как мне этого добиться?

Помните ...

Если вам нужно, чтобы ваша переменная увеличивала свое значение, вы должны использовать синтаксис :=, иначе он сохраняетодно и то же значение независимо от размера набора результатов

1 Ответ

0 голосов
/ 21 сентября 2018

Поскольку MySQL 8 поддерживает оконные функции, вы можете использовать: row_number()

Что делает row_number ()?

  1. Он начинает отсчет с 1 и увеличивает его на единицу плюс один
  2. row_number () должен работать с предложением OVER, чтобы создать порядок asc o desc для определенного столбца (в данном случаеnameUser)

Мой код должен выглядеть следующим образом

SELECT row_number() OVER(ORDER BY users.nameUser) AS NP, users.nameUser, posts.namePost
FROM users
JOIN posts ON users.id = posts.user_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...