MySQL如何选择按列1排序的列2的唯一值?

MySQL如何选择按列1排序的列2的唯一值?,mysql,select,sql-order-by,Mysql,Select,Sql Order By,我有带列的mytable(column1 bigint自动递增主键,column2 bigint NOT NULL)。以及一些测试值: +-+-+ |1|3| |2|4| |3|5| |4|4| +-+-+ 我想选择按column1排序的column2的唯一值。因此,我这样做: SELECT DISTINCT column2 FROM mytable ORDER BY -column1 LIMIT 0, 10 MySQL返回以下内容: +-+ |5| |4| |3| +-+ 但如何实现这一

我有带列的
mytable
column1 bigint自动递增主键,column2 bigint NOT NULL
)。以及一些测试值:

+-+-+
|1|3|
|2|4|
|3|5|
|4|4|
+-+-+
我想选择按column1排序的column2的唯一值。因此,我这样做:

SELECT DISTINCT column2 FROM mytable ORDER BY -column1 LIMIT 0, 10
MySQL返回以下内容:

+-+
|5|
|4|
|3|
+-+
但如何实现这一结果呢

+-+
|4|
|5|
|3|
+-+

我认为你做不到

考虑这个输入(为了清晰起见,我将第二列改为字母)

列2的不同集合是A、B、C

要按第一列排序,使用哪个版本的C?如果我们使用

1   C
那么结果是C,B,A

但是如果你使用

4   C
那么结果是B,A,C

没有唯一的订单

现在,如果要按第2列中每个值的第一次出现顺序排序,则情况不同:

select min(column1), column2
from mytable
group by column2
order by min(column1)

MySQL似乎首先对元组应用DISTINCT函数,然后才应用排序。您希望将其强制为第一顺序,然后使用子查询应用DISTINCT:

SELECT DISTINCT column2 FROM (
    SELECT column2 
    FROM mytable 
    ORDER BY -column1
) AS a;

你确定你想要的是4,5,3而不是3,4,5吗?
SELECT DISTINCT column2 FROM (
    SELECT column2 
    FROM mytable 
    ORDER BY -column1
) AS a;