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