Mysql 按值1分组,然后选择组中值2最高的行
我在Mysql 按值1分组,然后选择组中值2最高的行,mysql,sql,group-by,sql-order-by,greatest-n-per-group,Mysql,Sql,Group By,Sql Order By,Greatest N Per Group,我在MySQL 5.7数据库中有一个名为values的下表: 价值1 价值2 价值3 福 7. 有些事 福 5. 有些事 福 12 随便什么 酒吧 3. 什么 酒吧 18 随便什么 酒吧 0 随便什么 巴兹 99 随便什么 巴兹 100 什么 你不想分组。你想要过滤!您正在保留原始行 一种方法使用相关子查询: select v.* from values v where v.value2 = (select max(v2.value2) from values
MySQL 5.7
数据库中有一个名为values
的下表:
价值1
价值2
价值3
福
7.
有些事
福
5.
有些事
福
12
随便什么
酒吧
3.
什么
酒吧
18
随便什么
酒吧
0
随便什么
巴兹
99
随便什么
巴兹
100
什么
你不想分组。你想要过滤!您正在保留原始行
一种方法使用相关子查询:
select v.*
from values v
where v.value2 = (select max(v2.value2)
from values v2
where v2.value1 = v.value1
);
你不想分组。你想要过滤!您正在保留原始行
一种方法使用相关子查询:
select v.*
from values v
where v.value2 = (select max(v2.value2)
from values v2
where v2.value1 = v.value1
);
架构和插入语句:
create table mytable (value1 varchar(50), value2 int, value3 varchar(50));
insert into mytable values('foo', 7, 'something4');
insert into mytable values('foo', 5, 'something1');
insert into mytable values('foo', 12, 'anything3');
insert into mytable values('bar', 3, 'something7');
insert into mytable values('bar', 18, 'anything5');
insert into mytable values('bar', 12, 'anything8');
insert into mytable values('baz', 99, 'anything9');
insert into mytable values('baz', 100, 'something0');
查询#1(使用内部联接)
输出:
价值1
价值2
价值3
福
12
随便什么
酒吧
18
随便什么
巴兹
100
什么
架构和插入语句:
create table mytable (value1 varchar(50), value2 int, value3 varchar(50));
insert into mytable values('foo', 7, 'something4');
insert into mytable values('foo', 5, 'something1');
insert into mytable values('foo', 12, 'anything3');
insert into mytable values('bar', 3, 'something7');
insert into mytable values('bar', 18, 'anything5');
insert into mytable values('bar', 12, 'anything8');
insert into mytable values('baz', 99, 'anything9');
insert into mytable values('baz', 100, 'something0');
查询#1(使用内部联接)
输出:
价值1
价值2
价值3
福
12
随便什么
酒吧
18
随便什么
巴兹
100
什么
来自t t2的
是打字错误吗?@David。但是我看到你在问题中包含了一个表名,所以我在回答中使用了它。请注意,values
对于表名来说是一个糟糕的选择,因为它是一个SQL关键字(想想insert
)。但是我看到你在问题中包含了一个表名,所以我在回答中使用了它。请注意,values
对于表名来说是一个糟糕的选择,因为它是一个SQL关键字(想想insert
)。