Mysql - 按组排序,从组中选择最新

时间:2016-06-08 09:40:51

标签: mysql group-by

看我有一张桌子

id  col1 col2
1    a    x
2    b    y
3    c    z
4    a    x
5    b    y
6    c    z
7    a    x
8    b    y
9    c    z
10   a    p
11   b    q
12   c    r

为此,您需要执行以下查询:

create database test_db_one;
use test_db_one;
create table test_table_one (
    id INT NOT NULL AUTO_INCREMENT,
    col1 varchar(3),
    col2 varchar(4),
    PRIMARY KEY (id)
);
INSERT INTO test_table_one(col1,col2) VALUES ('a','x'),('b','y'),('c','z'),('a','x'),('b','y'),('c','z'),('a','x'),('b','y'),('c','z'),('a','p'),('b','q'),('c','r');

我想要以下结果,

id col1 col2
7   a   x
8   b   y
9   c   z
10  a   p
11  b   q
12  c   r

我按col1,col2进行分组以获得上述结果

select * from test_table_one group by col1,col2;

但是我得到了错误的结果

+----+------+------+
| id | col1 | col2 |
+----+------+------+
| 10 | a    | p    |
|  1 | a    | x    |
| 11 | b    | q    |
|  2 | b    | y    |
| 12 | c    | r    |
|  3 | c    | z    |
+----+------+------+

我不希望id 3,2,1在这里,我想要9,8,7代替它们,它们应该是最新的,我希望你得到我的意思,来自小组的最新ID。 现在一直在努力,有什么想法吗?

编辑: 我不能做ORDER BY(无论如何都没有给出所需的结果)。

2 个答案:

答案 0 :(得分:0)

嗯,这可以通过MAX()

简单地解决
SELECT MAX(t.id) as max_id,t.col1,t.col2
FROM test_table_one
GROUP BY t.col1,t.col2
ORDER BY max_id

答案 1 :(得分:0)

试试这个

select 
    max(id), col1, col2
from
    test_table_one
group by col1 , col2
order by id;

Sql Fiddle Demo