Конвертировать Postgres запрос с различными запросами в MySQL - PullRequest
0 голосов
/ 24 января 2019

У меня есть таблица пользователи :

users

Где id - первичный ключ.

Я хочу выбрать все столбцы, но все имена пользователей должны быть уникальными.Мне все равно, какие идентификаторы будут в ожидаемом результате, но в любом случае они мне нужны.Для этого я использую следующий запрос в Posgres 10:

select distinct on (username) * from users;

Это дает мне желаемый результат:

enter image description here

Как мне добиться того же, но с помощью MySQL-запроса?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Ваш запрос не имеет смысла в Postgres, потому что ему не хватает order by.Для этого запроса:

select distinct on (username) u.*
from users u
order by username, id desc;

Вы можете написать это как:

select u.*
from users u
where u.id = (select max(u2.id) from users u2 where u2.username = u.username);

Если предположить, что id уникально, то будет возвращаться одна строка на имя пользователя.

0 голосов
/ 24 января 2019

Я считаю, что это преобразование этого SELECT id, username FROM users group by id

Более подробную информацию можно найти по этой ссылке: Преобразование запросов SELECT DISTINCT ON из Postgresql в MySQL

Дополнительное примечание: Вы можете использовать это http://www.sqlfiddle.com/#!9/0bd1a2/1 для проверки SQL, что может быть полезно для преобразования Postgres в SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...