2013-07-24 149 views
0

我希望你能幫我解決一個我看不出來的SQL語句。通過計數組列出SQL數據

我有一個訪問清單,訪問的國家和日期如表;

  • 英國,2009年11月1日
  • 德國,2010 6月8日
  • 式剛架,2011年9月10
  • 英國,2011年10月11日

我想要提取數據,以便我得到如下表格列表

時報訪問 - 國家名單

  • 23 - 英國
  • 10 - 法國,德國
  • 4 - 捷克共和國,美國,加拿大
  • 1 - 波蘭,塞爾維亞,阿根廷,新西蘭

,使數據表明,我已經4 visist捷克,美國&坎達

和查詢

select * from 
(
    select count(*) as "trips", country from trip_view 
    group by country 
    order by 1 desc 
) as a 

返回數據

  • 23英國
  • 10法國
  • 10德國
  • 4捷克共和國
  • 4美國
  • 4加拿大

所以我需要在外部SQL一種羣體的,但如果我做了以下

select * from 
(
    select count(*) as "trips", country from trip_view 
    group by country 
    order by 1 desc 
) as a 
group by trips 

然後我只得到了每個國家1項。即

  • 23英國
  • 10法國
  • 4捷克共和國

因此,對於每一行我只有1個國家上市,而不是全部。即第2行應顯示法國&德國和第3行應顯示捷克,美國&加拿大

任何想法如何在MySQL中做到這一點?

感謝

+0

的http://開發.mysql.com/DOC/refman/5.0/EN/group-by-functions.html#function_group-concat –

回答

1

在全國列使用GROUP_CONCAT它應該得到你想要的結果:

SELECT trips, 
     GROUP_CONCAT(country) AS country 
    FROM (
      SELECT COUNT(*) AS "trips", 
        country 
      FROM trip_view 
     GROUP BY country 
     ) a 
GROUP BY trips 
ORDER BY 1 DESC 

輸出:

TRIPS COUNTRY 
    23 United Kingdom 
    10 France,Germany 
    4 Czech Republic,Canada,USA 

Live DEMO.

+0

太簡單了,太棒了!我所有的SQL年我從來沒有遇到過group_concat。謝謝 –

+0

@ jason.kaisersmith還有[**'CONCAT' **](http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat),[**' CONCAT_WS' **](http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws),它們都很有用。 – Prix