2012-07-11 92 views
1

表结构:与组MySQL查询通过与秩序

country 
season 
points 

目前查询:

SELECT SUM(points) AS total, country 
FROM table 
WHERE season >= X 
GROUP BY country 
ORDER BY total desc 

这让我由一个特定国家总共收集了点订购了不错的清单。但是,如果一个国家与另一个国家联系在一起,我想根据他们在最近一个赛季给出的分数来排序,这在同一个查询中是否可能?如果是这样,怎么样? (记住其此刻分组)的行

例如 丹麦(国家),1(季节),10(分) 丹麦(国家),2(季节),5(分) 瑞典(国家) ,1(季节),5(点) 瑞典(国家),2(旺季),10(分)

+0

什么意思“如果一个国家与另一个国家并列”?你怎么知道这个? – fancyPants 2012-07-11 09:45:18

+2

我猜他的意思是当他们有相同的积分总数时 – PoeHaH 2012-07-11 09:45:47

+0

我只是在顺序上添加了另一个子句。 ORDER BY total,season DESC – PoeHaH 2012-07-11 09:46:22

回答

1

这也许会做你的绝招:

SELECT SUM(points) AS total, country 
FROM table 
WHERE season >= X 
GROUP BY country 
ORDER BY total DESC, (SELECT t2.points FROM table t2 WHERE table.country=t2.country ORDER BY t2.season LIMIT 1) DESC 
+0

即时通讯思考这个是否比ypercube的查询有更好的性能? – 2012-07-11 10:55:43

1
SELECT grp.total, grp.country 
FROM 
     (SELECT SUM(points) AS total, country, MAX(season) AS max_season 
      FROM table 
      WHERE season >= X 
      GROUP BY country 
     ) AS grp 
    LEFT JOIN 
     table AS t 
      ON t.country = grp.country 
      AND t.season = LATEST_SEASON 
ORDER BY 
    grp.total DESC 
    , t.points DESC ; 
+0

thx - 这有助于:)现在,只是我只需要决定是否它放在实际的地方,而不是每次像这样得到它太沉重:) – 2012-07-11 10:49:33