2016-06-08 45 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