2013-10-31 151 views
0

我正在尝试按升序从每个城市中获取计数数量。但我得到的错误是子查询返回多行。例如:一张表包含所有的城市,州和pincode。在另一个表格中,我们将列出具有相应城市的用户记录列表。所以我试图把每个城市的用户数量都计算在内。子查询返回多个行 - Mysql

EG:表A

City State Pincode 
ABC TN 600001 
ABD TN 600001 
ABE KA 500001 
ABF KA 500002 
ABG KA 500003 
CDE KL 500004 
CDF KL 500004 

表B

Userid Answer 
1  ABC 
2  ABC 
3  ABD 
4  ABD 
5  ABD 
6  ABD 
7  ABE 
8  ABE 
9  ABD 
10  ABC 

SQL查询:

SELECT count(a.answer) from table b as a where a.answer=(select distinct(b.city) from table a as b); 

所以我得到的子查询返回不止一行。任何人都可以帮助我解决这个问题,并且对学习SQL Query有很大的帮助。

+0

将你的'='改为'IN',这样你就可以得到答案在哪里子查询 – NoLifeKing

回答

0

试试这个

select count(*) as cityCount, answer 
from B inner join A on B.answer = A.city group by answer 
+0

谢谢naveen goyal :) – sabarisan

0

我想你不知道如何使用AS关键字:这是使别名,你不需要在这里。

您正在寻找的GROUP BY声明

如果你希望所有的城市信息+由市答案的数量,你可以这样做:

SELECT count(b.Answer) as count_answer, City, State, Pincode 
FROM table b join a on a.City=b.Answer 
GROUP BY City 

看到MySQL文档以获得更多关于这一点; )