2013-08-24 42 views
1

所以我有這樣如何獲得行數爲

SELECT DISTINCT colB FROM tbl WHERE colA = "foo" LIMIT 0, 20 

這讓我有最大的數組的查詢。 20條記錄,其中colA匹配"foo",但沒有重複記錄。每個陣列條目包含一個關聯數組,其中包含的colB的價值,就像

0 => array(
     'colB' => 'some_value', 
    ), 
1 => array(
     'colB' => 'other_value', 
    ) 

我也能得到COUNT()colB價值?我的意思是這樣的:

SELECT COUNT() as cbCount FROM tbl WHERE colA = "foo" AND colB = "some_value" 
SELECT COUNT() as cbCount FROM tbl WHERE colA = "foo" AND colB = "other_value" 

但包含在第一查詢作爲另一個陣列領域,如:

0 => array(
     'colB' => 'some_value', 
     'cbCount' => 5, 
    ), 
1 => array(
     'colB' => 'other_value', 
     'cbCount' => 2, 
    ) 

回答

1

您需要使用Group ByCount -

SELECT 
     colB, count(colB) as cbCount 
FROM  
     tbl 
WHERE 
     colA = 'foo' 
GROUP BY 
     colB 
LIMIT 
     0, 20 

此查詢將獲取前20行,根據不同的值colB對它們進行分組並計數。

+0

so DISTINCT不是必需的嗎? –

+0

@AnnaK:不,在這種情況下。 '集團由'將照顧它。嘗試執行它,你會看到。 –

1

所有你需要做的是使用GROUP BY條款

SELECT colB, 
     COUNT(colB) AS cbCount 
FROM tableName 
WHERE colA = 'Foo' 
GROUP BY colB