在Max查询

时间:2015-07-26 17:42:42

标签: 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
    oee_main_interim.id= max(oee_main_interim.id)

所有3个字段都是INT类型。查询通过不按NAME分组返回id的最大值,而是列出多个NAME。我想要的只是:最大ID,相应的NAME和相应的S_TYPE。所以我的输出应该是这样的:

ID    NAME       S_TYPE
1234   1           2
1345   2           1
1456   3           2
1567   4           2

ID为每个NAME的表格的最大ID ...

oee_main_interim中的原始数据如下:

screenshot

所以我想要的是选择每个NAME的最大ID并显示其相关的S_TYPE(如上所示)和S_TYPE&lt;&gt; 0。

我的所有列的完整表格如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

此查询使用派生表,将为您提供每个名称的最大ID及其s_type:

for(Tile tile: (half of)tiles){
    tile.draw();
}

或者你可以使用相关的子查询:

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