看我有一张桌子
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(无论如何都没有给出所需的结果)。
答案 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;