子查询返回多行 - Mysql

时间:2013-10-31 10:13:06

标签: mysql sql subquery

我正在尝试按升序排序获取每个城市的Count of Count。但是我得到错误,因为子查询返回多行。

例如:一张表包含所有城市,州和密码。在另一个表中,我们将列出具有相应城市的用户记录。因此,我试图将每个城市的用户数量计算在内。

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 Query:

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

所以我得到子查询返回多行。任何人都可以帮我解决这个问题,对学习SQL查询会很有帮助。

2 个答案:

答案 0 :(得分:0)

试试这个

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

答案 1 :(得分: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文档;)