2012-07-11 48 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