簡體   English   中英

Mysql - 按組排序,從組中選擇最新

[英]Mysql - Order in group by , select latest from group

看我有一張桌子

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(按順序不提供所需的結果)。

好吧,這可以通過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

嘗試這個

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

Sql小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM