将具有不同的Postgres查询转换为MySQL查询

时间:2019-01-24 18:40:16

标签: mysql sql postgresql

我有一个表用户

users

id 是主键。

我想选择所有列,但是所有用户名都应该是唯一的。我不在乎哪个ID会达到预期的结果,但是无论如何我都需要它们。为此,我在Posgres 10中使用以下查询:

select distinct on (username) * from users;

这给了我想要的结果:

enter image description here

如何使用MySQL查询来达到相同的目的?

2 个答案:

答案 0 :(得分:1)

您的查询在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是唯一的,则每个用户名将返回一行。

答案 1 :(得分:0)

我相信这是那个的转换 SELECT id, username FROM users group by id

您可以在此链接上找到更多信息:Converting SELECT DISTINCT ON queries from Postgresql to MySQL

附加说明:您可以使用此http://www.sqlfiddle.com/#!9/0bd1a2/1测试您的SQL,这可能有助于您将Postgres转换为SQL