如何用连接编写查询

时间:2014-08-01 09:32:46

标签: mysql sqlalchemy mysql-python

如何将此查询转换为单个查询?我们可以使用连接吗?

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

1 个答案:

答案 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;