我有一个类似的MySQL的查询:改写为一体的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的旧应用程序。
EDIT显示的数据和预期的结果:
假设表a
如下所示:
| c1 | c2 | |+++++++++++| | 222 | 101 | | 223 | 101 | | 224 | 101 | | 222 | 102 | | 223 | 102 |
鉴于C2指定的值,我发现C1的所有匹配值。所以,如果c2=101
:现在
| c1 | |+++++| | 222 | | 223 | | 224 |
,为每个3个的值,我想Count
的次数值出现在全表a
:
| c1 | count | |+++++++++++++| | 222 | 2 | | 223 | 2 | | 224 | 1 |
不清楚自己在找什么结果......你能证明显示重复的行/值一些示例数据,以及基于样本数据作为回报集您预期的内容。 – DRapp
感谢您的建议。添加。 – jalperin