从这个查询工作的 MySQL 迁移:
SELECT DISTINCT
code,
title,
country
FROM
data_a
ORDER BY
sortorder
基本上,获取一个列表并按sortorder
不基于code
、title
或的定义的用户/公司对其进行排序country
。
现在我在 Postgres 中,这个查询不起作用并得到:
ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list
LINE 12: sortorder
^
SQL state: 42P10
Character: 135
但是,这样做会返回重复项,因为此处未列出使整个记录唯一的其他字段。code
我只想要,title
或country
中的唯一值sortorder
。
我试图做一个子查询,以为我可以在子查询中对其进行排序并将其带入已经排序的父查询中,但它只是以非特定顺序出现......好吧,也许它是特别的,但它不是不是我们想要的顺序。
SELECT
DISTINCT s.*
FROM
(
SELECT
code,
title,
country
FROM
data_a
GROUP BY
code,
title,
country,
sortorder
ORDER BY
sortorder
) s;
关于如何做到这一点的任何建议?
实际上,确实设法弄清楚了: