我需要通过在OrganisationID上分组来选择具有最小距离的行.这是我在单个表中的数据:
ID OrganisationID Distance
0 10 100
1 10 200
3 10 50
4 20 80
5 20 300
Run Code Online (Sandbox Code Playgroud)
这是我想要的结果:
ID OrganisationID Distance
3 10 50
4 20 80
Run Code Online (Sandbox Code Playgroud)
这将实现:
SELECT t1.*
FROM yourTable t1
LEFT JOIN yourTable t2
ON (t1.OrganisationID = t2.OrganisationID AND t1.Distance > t2.Distance)
WHERE t2.OrganisationID IS NULL;
Run Code Online (Sandbox Code Playgroud)
请注意,如果有多个行距离最短,则返回两者
编辑:
如果你在评论中说只想要一列和MIN距离,你可以使用MIN和GROUP BY轻松完成:
SELECT city, MIN(distance)
FROM table2
GROUP BY city;
Run Code Online (Sandbox Code Playgroud)
ps我看到你之前删除的问题,并用不同于此的方式回答它(告诉你,因为你在WHERE子句中有了organisationID,你可以这样做:SELECT TOP 1 ... order by距离DESC),但是如果你需要更多的一个organisationID,这可以让你到那里)