一尘不染

MySQL子查询返回多行

mysql

我正在执行此查询:

SELECT
    voterfile_county.Name,
    voterfile_precienct.PREC_ID,
    voterfile_precienct.Name,
    COUNT((SELECT voterfile_voter.ID
FROM voterfile_voter
JOIN voterfile_household
WHERE voterfile_voter.House_ID = voterfile_household.ID
AND voterfile_household.Precnum = voterfile_precienct.PREC_ID)) AS Voters
FROM voterfile_precienct JOIN voterfile_county
WHERE voterfile_precienct.County_ID = voterfile_County.ID;

我正在尝试使其返回如下内容:

County_Name   Prec_ID   Prec_Name   Voters(Count of # of voters in that precienct)

但是,我得到了错误:

#1242-子查询返回的行数超过1。

我尝试将COUNT语句放置在子查询中,但是收到无效的语法错误。


阅读 622

收藏
2020-05-17

共1个答案

一尘不染

您可以使用简单的分组方式在没有子查询的情况下进行尝试:

SELECT voterfile_county.Name, 
  voterfile_precienct.PREC_ID, 
  voterfile_precienct.Name, 
  count(voterfile_voter.ID)
FROM voterfile_county
JOIN voterfile_precienct 
  ON voterfile_precienct.County_ID = voterfile_County.ID
JOIN voterfile_household 
  ON voterfile_household.Precnum = voterfile_precienct.PREC_ID
JOIN voterfile_voter 
  ON voterfile_voter.House_ID = voterfile_household.ID 
GROUP BY voterfile_county.Name, 
  voterfile_precienct.PREC_ID, 
  voterfile_precienct.Name

使用GROUP BY时,未分组的任何列都必须具有聚合子句(fe
SUM或COUNT。)因此,在这种情况下,您必须对县名称,precienct.id和precient.name进行分组。

2020-05-17