我有这张桌子,我想做以下事情:
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
拜托,这里的任何人都可以帮我解决这个问题吗?
答案 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
)
祝你好运。