카테고리 없음

[mysql] MySQL : 오류 코드 : 1242 하위 쿼리가 2 개 이상의 행을 반환합니다.

필살기쓰세요 2021. 2. 3. 14:24

하위 선택이 행보다 더 많이 반환하지만 예를 들어 첫 번째 행이 필요하면 limit 1을 사용할 수 있습니다.

SELECT daire.code, daire.durumu, daire.blblkodu, CONCAT(cari.adi , cari.soyadi) AS sahibi,
CASE daire.blkrcrkodu WHEN '0'
THEN CONCAT(cari.adi,cari.soyadi)
ELSE (SELECT CONCAT(adi,soyadi)
        FROM cari
                WHERE blkodu = daire.blkrcrkodu
                        AND firma_code = 40
                                AND site_code = 84
                                        LIMIT 1) END AS oturan,
                                        daire.kat, daire.kapi_no, daire.giris_no, daire.alan_m2, daire.__formatted_date
                                        FROM daire
                                        INNER JOIN cari ON
                                        (daire.blshcrkodu = cari.blkodu AND cari.site_code = 84 AND daire.site_code = 84)
                                        WHERE daire.site_code = 84
                                        AND daire.firma_code = 40
                                        ORDER BY daire.blkodu DESC
                                        
-------------------

기본 쿼리의 선택 목록에 하위 쿼리가 있습니다.

...
(SELECT CONCAT(adi,soyadi)
 FROM cari
  WHERE blkodu = daire.blkrcrkodu
   AND firma_code = 40
    AND site_code = 84) END AS outran
    

...

이러한 하위 쿼리는 1 개의 행과 1 개의 열 (단일 값)을 반환해야합니다. 하위 쿼리는 1 개의 열을 반환하지만 2 개 이상의 행을 반환하므로 오류가 발생합니다.

쿼리 자체에 대해 아무것도 공유하지 않았고 어쨌든 오류가 무엇인지 물었 기 때문에 요구 사항에 맞게 쿼리를 수정하는 방법에 대한 정확한 솔루션을 제공 할 수 없습니다. 일반적으로 신청할 수 있습니다.

  • limit 1 행 수를 1로 제한하는 절
  • min()결과 집합을 단일 행으로 축소하는 것과 같은 집계 함수를 사용합니다.
  • 단일 레코드 만 반환하도록 where 기준을 수정합니다.


출처
https://stackoverflow.com/questions/39920179