Mysql Max查询中的分组
我有以下查询,除了没有按照我的意愿进行分组外,它工作正常:Mysql Max查询中的分组,mysql,group-by,max,Mysql,Group By,Max,我有以下查询,除了没有按照我的意愿进行分组外,它工作正常: SELECT oee_main_interim.id, oee_main_interim.NAME, oee_main_interim.S_TYPE FROM oee_main_interim WHERE oee_main_interim.S_TYPE <>0 GROUP BY oee_main_interim.id, oee_main_interim.NAME HAVING o
SELECT
oee_main_interim.id,
oee_main_interim.NAME,
oee_main_interim.S_TYPE
FROM
oee_main_interim
WHERE
oee_main_interim.S_TYPE <>0
GROUP BY
oee_main_interim.id, oee_main_interim.NAME
HAVING
oee_main_interim.id= max(oee_main_interim.id)
ID是每个名称的表的最大ID
我在表oee_main_Missional中的原始数据如下:
因此,我只想为每个名称选择最大ID,并显示其相关的S_类型,如上图所示,其中S_类型为0
我所有列的完整表格如下所示:
此查询使用派生表,将为您提供每个名称的最大id及其s_类型:
Select
oee_main_interim.id,
oee_main_interim.NAME,
oee_main_interim.S_TYPE
From
oee_main_interim
Join
(
select max(id) max_id, name from oee_main_interim group by name
) a on a.name = oee_main_interim.name and a.max_id = oee_main_interim.id
Where
oee_main_interim.S_TYPE <> 0
或者可以使用相关子查询:
Select
id, NAME, S_TYPE
From
oee_main_interim o1
Where
S_TYPE <> 0
And id = (select max(id) from oee_main_interim o2 where o1.name = o2.name);
很抱歉,这两个查询都没有返回任何结果records@elstiv真正地真令人惊讶。您能否编辑您的问题并添加一些示例源数据?我看不出他们为什么不返回任何数据。@elstiv看这个例子:它根据您的样本数据返回三行-您的数据库或您执行的查询中有什么不同吗?我不知道出了什么问题。我再次编辑了主问题以包含表中的所有其他列,可能问题与我未包含在查询中的其他列有关…@elstiv对不起,但我也看不到问题。查询可以很好地处理附加列,因为它们不用于选择要返回的行。
Select
id, NAME, S_TYPE
From
oee_main_interim o1
Where
S_TYPE <> 0
And id = (select max(id) from oee_main_interim o2 where o1.name = o2.name);