DISTINCT + другие поля MySQL

Каким образом сделать так, чтобы в выборке были другие поля? Сейчас выводится только login, а нужно вывести ещё password, city и т.д.. GROUP BY не предлагать!

SELECT DISTINCT `login`
 FROM `accounts`
WHERE `valid` = '1'

Если перечислять их в

DISTINCT `login`, `password`, `city`

То уникальность становится по всем трём этим полям, а мне нужна уникальность только по login, а остальные поля чтобы просто были в выборке.


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

Автор решения: Aziz Umarov

Воспользуйтесь window functions

select * from (
   SELECT 
   *,
   row_number() over(partition by login order by 'password', 'city') as rowNumber
   FROM `accounts`
WHERE `valid` = '1') 
AS data 
where rowNumber = 1

о вернет вам уникальные подберите сортировку такую чтоб под первым стоял вам нужные логины.

→ Ссылка