我有一個mysql查詢返回一個行數組。我需要從一列中獲得不同值的計數。 我的查詢是動態的,其中由php評估的多個條件更改WHERE子句,所以如果可能的話,我真的想在一個查詢中完成所有操作,以避免重複每個動態條件。Mysql運行計數明顯內另一個查詢?
這裏是我想怎樣做一個簡單的版本 -
如果這表示我的SQL表的一個非常簡單的版本:
Column1, Column2, Column3, Group, Active
a , b , c , 1 , YES
d , e , f, , 2 , YES
g , h , i , 1 , YES
j , k , l , 3 , NO
我願做這樣的事情:
"SELECT Column1, Column2, Column3, Group,
(SELECT COUNT(DISTINCT Group) FROM 'table') AS totalGroups
FROM 'table'
WHERE Active like 'YES';"
我想要的結果是,我可以報告:
一)託塔在查詢
mysql_num_rows($result) should equal = 3
b)中不同組
的總數L行$phparray['totalgroups'] should equal = 2
(Right now, 'totalgroups' equals = 3)
(1)可以這樣做?目前,'totalgroups'返回3而不是2。我可以讓它使用與查詢的其餘部分相同的「Where」子句嗎?
在我實際的代碼,這要複雜得多,我的計數返回1945的時候我只希望它返回2. :)
(2)是否有更好的方式來做到這一點?
我試過php的array_unique()
和array_count_values()
,但array_unique()
不會對多維數組工作,我不能讓array_count_values()
正常工作。
我看了很多其他問題,但找不到有人問這個問題。 我回顧了MYSQL手冊的RE子查詢,但沒有說明您是否可以共享Where子句。
如果你必須有我的實際代碼才能回答這個問題(而不是上面的演示代表),請讓我知道。這是超過兩頁與所有的PHP動態限定符,所以我決定爲了清晰起見編寫演示代碼。
對不起,什麼必須是一個令人困惑的問題。我一直在研究幾個小時,並且找不到可行的答案。我試過COUNT(DISTINCT table.Group)AS totalGroups,它返回正確的值,但只返回一行。其他行不在查詢中。我覺得我錯過了一些簡單的... – dwlorimer 2013-05-03 15:16:16