在mysql中没有“GROUP BY”表达式的行组

时间:2013-02-03 05:54:07

标签: mysql sql group-by

我有这张桌子,我想做以下事情:

idstep   idproject   beg_date  end_date
   1        1
   2        1
   3        1
   4        1
   1        2
   2        2
   3        2
   4        2
   5        2
   1        3
   2        3
   3        3

在不使用“GROUP BY”

的情况下检索每个项目的最大步数

使用GROUP BY子句,我得到了我想要的结果,如下所示:

  SELECT MAX(idstep), idproject 
    FROM mytable
GROUP BY idproject;

结果:

    idstep     idproject
    4            1
    5            2
    3            3

拜托,这里的任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我同意对于这种特殊情况使用GROUP BY更有意义,但这应该有效:

SELECT t.project, t.step
FROM YourTable t
  LEFT JOIN YourTable t2 on t.step < t2.step and t.project = t2.project
where t2.step IS NULL

这是Fiddle

你也可以使用NOT EXISTS(感觉我整晚都在使用它),虽然我个人更喜欢LEFT JOIN / NULL方法:

SELECT t.project, t.step
FROM YourTable t
WHERE NOT EXISTS (
  SELECT *
  FROM YourTable t2 
  WHERE t.step < t2.step 
    AND t.project = t2.project
)

更多小提琴:http://www.sqlfiddle.com/#!2/ebbc2/1

祝你好运。