복붙노트

[SQL] MySQL의 서브 쿼리 반환 둘 이상의 행

SQL

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)

그러나, 나는 오류를 얻고있다 :

나는 서브 쿼리에 COUNT 문을 배치 시도하지만 잘못된 구문 오류가 발생합니다.

해결법

  1. ==============================

    1.당신은 간단한 GROUP BY와 함께, 부질없이 시도 할 수 있습니다 :

    당신은 간단한 GROUP BY와 함께, 부질없이 시도 할 수 있습니다 :

    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, 당신이 집계 조항이 있어야에 그룹화되지 않도록 모든 열 (f.e. SUM 또는 COUNT를.)를 사용하면 카운티 이름, precienct.id 및 precient.name에 그룹에 있습니다.

  2. ==============================

    2.당신이 오류가 나타나면 : 오류 둘 이상의 행 이하 1,242 하위 쿼리 반환, 모든 하위 조회하기 전에 넣어보십시오. 예 :

    당신이 오류가 나타나면 : 오류 둘 이상의 행 이하 1,242 하위 쿼리 반환, 모든 하위 조회하기 전에 넣어보십시오. 예 :

    이 쿼리 반환 오류 :

    SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);
    

    이 좋은 쿼리입니다 :

    SELECT * FROM t1 WHERE column1 = ANY (SELECT column1 FROM t2);
    
  3. ==============================

    3.이 시도

    이 시도

    SELECT
    voterfile_county.Name, voterfile_precienct.PREC_ID, 
    voterfile_precienct.Name,
        (SELECT COUNT(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 
    ON voterfile_precienct.County_ID = voterfile_County.ID
    
  4. ==============================

    4.아래의 예를 참조하고 그에 따라 쿼리를 수정합니다.

    아래의 예를 참조하고 그에 따라 쿼리를 수정합니다.

    select COUNT(ResultTPLAlias.id) from 
    (select id from Table_name where .... ) ResultTPLAlias;
    
  5. from https://stackoverflow.com/questions/778239/mysql-subquery-returns-more-than-one-row by cc-by-sa and MIT license