2011-12-01 34 views
0

我正在嘗試編寫一個MySQL查詢以將通配符分組在一起。這可能嗎?MySQL如何使用通配符進行分組

我的表有以下行:

Region 
  1. 南:邁阿密
  2. 南:熱火:邁阿密海灘
  3. 南:邁阿密
  4. 南:邁阿密:邁阿密海灘
  5. 南:邁阿密

目前使用以下查詢:

SELECT `region`, count(*) as `TOTAL` FROM `table` WHERE 1=1 group by `region` 

這給下面的輸出: 地區總

1. South       3 
2. South: Miami      3 
3. South: Miami: Miami Beach  2 

我怎樣才能調整查詢給出下面的輸出?

Region      Total 

1. South       8 
2. South: Miami      5 
3. South: Miami: Miami Beach  2 

感謝您的幫助。

+3

該查詢已經給出了所需的輸出,而不是你所說的輸出。 –

+0

是的,它已經應該給第二個輸出了。 –

+0

如果你想要第一個輸出,你不能在單個查詢afaik中做到這一點。因爲每行最多返回一次,所以group-by count()的總數不應超過數據庫大小。 –

回答

1

撇開事實,這不遵循規範化的基本原則(我有次我自己,當我沒必要去那麼遠),這兩輪牛車應該工作:

SELECT a.region, (a.total + COUNT(b.region)) AS total 
FROM 
    (SELECT region, COUNT(*) AS total 
     FROM table 
     GROUP BY region 
    ) AS a 
    LEFT JOIN table b 
    ON b.region LIKE CONCAT(a.region, ":%") 
GROUP BY a.region 

請記住,你必須有一個區域索引,你會更好用一個規範化的表(即地區,ParentRegion)。乾杯!

相關問題