在mysql中对没有“GROUPBY”表达式的行进行分组

在mysql中对没有“GROUPBY”表达式的行进行分组,mysql,sql,group-by,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 使

我有这个表,我想做以下工作:

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

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

结果:

    idstep     idproject
    4            1
    5            2
    3            3

请问,这里有人能帮我解决这个问题吗?

我同意在这个特殊情况下使用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
这是我的答案

您也可以使用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
)
更多小提琴:


祝你好运。

我很好奇。如果使用GROUP BY可以得到您想要的结果,为什么您不想使用它?如果您已经通过一个简洁的查询得到了您想要的结果,为什么您想要一个替代方案?听起来像家庭作业。分组而不是分组?使查询复杂化的具体原因是什么?
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
)