Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Max查询中的分组_Mysql_Group By_Max - Fatal编程技术网

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);