2013-07-26 39 views
2

我不知道如何問這個問題,所以我不知道我在找什麼。這是我想要做的。mysql返回行爲每個字段列計數值

我的表有拉鍊碼和一個計數器列

id zipcode count 
11 50022 23 
12 50023 1 
13 50025 8 
14 50042 2 
15 50076 2 

我需要有一個返回拉鍊碼在計數器列(整數)X量的select語句。

所以選擇迴歸看起來是這樣的:

50022 
50022 
50022 
50022 
50022 
50022 (and on 23 times) 
50023 (one record here) 
50025 (there were eight of these so eight records). 

等。

是否有可以在MySQL中實現此功能或功能的分組?

這是一個較大的查詢的一部分,所以我不能在服務器端代碼中處理這個(否則我只是創建一個循環)。

希望這一切都有道理,並提前感謝!

更新:我不是想得到一個明確的分組......做相反的事情(如一個人下面評論)。

+0

你應該建立一個SQLFiddle向我們展示你已經嘗試過。 – DevlshOne

回答

0

這可以是你想要的。雖然我不明白你的問題非常好..

$q = mysql_query("SELECT count FROM <table> WHERE zipcode='50022'"); 

    while($data = mysql_fetch_array($q)){ 
    echo "The {$data['zipcode']} is {$data['count']} times printed."; 
    for($i=1;$i<=$data['count'];$i++){ 
     echo $i." - ".$data['zipcode']; 
} 
    } 

UPDATE:

,如果你正在嘗試做這裏面的mysql試試這個SQL查詢

SELECT count FROM <table> WHERE zipcode='50022' 

<table>改變你的表名稱。

+0

這看起來像PHP代碼(我在MySQL內部的視圖中執行此操作)。我並不是想獲得計數值。 –

+0

我已經更新了答案。 –

0

我認爲你要找的是sql group by子句。此子句允許您按特定限定符對數據進行分組,並將其添加到您的選擇語句中。

所以,如果我理解正確,你由數列分組的郵編,你會做線沿線的東西:

SELECT郵編FROM [TABLE_NAME] GROUP BY計數;

我希望這會有所幫助。

+0

我想你誤解了這個問題。他想要GROUP BY的逆。每個郵政編碼只有一個條目。他希望郵政編碼出現一定的次數。例如,第一行,「count」列是23,所以他希望郵政編碼出現23次。 – Y0lk

+0

啊,是的,我誤解了。對於那個很抱歉。 – Tcarp

0

創建一個虛擬見下表

CREATE TABLE `dummy1` (
    `dummyId` int(11) NOT NULL, 
    PRIMARY KEY (`dummyId`) 
) 

insert into dummy1 values(1),(2),(3), (4), (5),.......(n); 

其中n存在相當大數目

在使用他下面的查詢後,填充結果

select zipcode from yourtable, dummy1 where countValue <= dummyId order by zipcode 

我知道這是因爲給定不是一個整潔的解決方案。但由於MySQL不支持connect by如Oracle不,這似乎是克服這種情況

對於類似的問題的解決方案,Refer This