我有一個類似這樣的mySQL查詢:
SELECT c1, c2 FROM a WHERE a.c3 = 123
我有第二個查詢,我需要執行這樣的每個c2值:
SELECT COUNT(*) AS `Counter` FROM a WHERE a.c2 = [each value of a.c2]
目前,我以編程方式遍歷第一個查詢的每個結果並執行第二個查詢。所以,發生的情況是主查詢使用特定的c3值來生成結果集。然後,第二個查詢使用該結果集並為c2的每個返回值執行COUNT,而對c3的值沒有任何限制。
是否可以重寫第一個查詢,以便它還返回 Counter
的聚合結果?換句話說,我想結束一個包含
c1,c2,Counter
的結果集。
我試圖寫一個子查詢,但這不起作用:
SELECT c1, c2,
(SELECT COUNT(*) AS `Counter` FROM a)
FROM a WHERE a.c3 = 123
(我不知道如何使WHERE子句使用從“主”查詢中檢索到的值。)
我正在使用一個使用mySQL 4.1的舊應用程序。
編輯顯示數據和所需的結果:
假設表 a
如下所示:
| c1 | c2 | |+++++++++++| | 222 | 101 | | 223 | 101 | | 224 | 101 | | 222 | 102 | | 223 | 102 |
給定c2的指定值,我找到c1的所有匹配值。所以,如果 c2 = 101
:
| c1 | |+++++| | 222 | | 223 | | 224 |
現在,對於這三個值中的每一個,我都希望 Count
該值出現在整個表 a
中的次數:
| c1 | count | |+++++++++++++| | 222 | 2 | | 223 | 2 | | 224 | 1 |