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;