我有一个表用户:
id 是主键。
我想选择所有列,但是所有用户名都应该是唯一的。我不在乎哪个ID会达到预期的结果,但是无论如何我都需要它们。为此,我在Posgres 10中使用以下查询:
select distinct on (username) * from users;
这给了我想要的结果:
如何使用MySQL查询来达到相同的目的?
答案 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