2016-06-08 44 views
1

见我有一个表MySQL的 - 秩序组下,选择从组

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 | 
+----+------+------+ 

我不想编号3,2,1在这里,我想IDS 9,8,7代替他们,他们应该是最新的,我希望你明白我的意思,来自该组织的最新ID。 现在一直在挣扎,有什么想法吗?

编辑: 我不能做ORDER BY(顺序依靠不反应所需的结果)。

回答

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 
+0

感谢,认为做到了!马克斯是关键! – user1735921

+0

@Downvoter谨慎解释? – sagi

0

试试这个

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

Sql Fiddle Demo

+0

与我的答案不一样吗? – sagi

+0

现在它是我的确切副本 – sagi