如何将此查询转换为单个查询?我们可以使用连接吗?
SELECT
id, parentID, name
FROM (
SELECT
GroupActivities.groupID AS "groupID",
max(GroupActivities.id) AS "activityID"
FROM GroupActivities
GROUP BY groupID
) AS anon_4, Groups
WHERE
Groups.id = anon_4.groupID
ORDER BY
anon_4.activityID DESC
我们有两张桌子: 1)组:列为id,parentID,name 2)GroupActivities:列为id,groupID
答案 0 :(得分:0)
我不确定你想要从那个查询中获得什么,但我会尽力给你一个答案。在这种情况下使用JOIN可以完成,但我看不出它会给你带来什么好处(从技术上讲,我认为你已经在那里使用了一种形式的加入)。
如果我正确理解了您的查询,您将尝试获取有关每个组的一些基本信息,同时按降序对其进行排序,并将与该组ID相关联的最大GroupActivities.id作为排序条件。我对吗? 好吧,因为你需要从另一个表中获得最大值,所以我认为无法避免选择子查询。 话虽如此,这是我提出的解决方案(很难说它是否比你的更好,也许这里的一些SQL大师可以告诉我们哪一个表现更好):
SELECT g.id, g.parentID, g.name
FROM Groups AS g
ORDER BY
(
SELECT MAX(ga.id)
FROM GroupActivities AS ga
WHERE ga.groupId = g.id
)
DESC;