하위 쿼리에는 태그와 크기의 두 열이 있습니다. 스칼라 하위 쿼리가 아닙니다.
select-list의 모든 하위 쿼리는 스칼라 하위 쿼리이어야하며 정확히 한 열과 한 행을 반환해야합니다.
예 : 간단하게 유지하고 리터럴 값의 쿼리를 사용하므로 테이블을 참조하지 않습니다. 선택 목록의 각 항목에 대해 열 별칭을 지정합니다.
SELECT
123 AS colum1,
456 AS column2,
(SELECT 789, 'abc') AS column3;
기다려라! 789와 'abc'에 열 별칭 column3
을 어떻게 할당 할 수 있습니까? 그게 모호합니다.
불투명하므로 이라는 오류 메시지가 표시됩니다. 왜냐하면이 모호하기 때문입니다. 하위 쿼리는 두 개의 열을 반환했지만이 규칙은 외부 쿼리의 선택 목록에있는 각 항목이 하나의 열이어야한다는 규칙을 위반합니다.
이제 선택 목록의 각 항목은 하나의 열만 반환합니다.
는 유사한 규칙도, 즉 더 이상의 행을 반환하지 않으려면 선택 목록에서 하위 쿼리를 필요로 존재합니다
SELECT
123 AS colum1,
456 AS column2,
(SELECT some_column FROM table_with_multiple_rows) AS column3;
서브 쿼리가 여러 값을 반환하기 때문에이 잘못하고있는 방법은 물건이 없다 그 모든 값은 외부 쿼리에서 결과의 한 행에 들어갑니다.
해결 방법에는 몇 가지가 있습니다. 하위 쿼리가 하나 이상의 행을 반환하지 않는지 확인하십시오.
SELECT
123 AS colum1,
456 AS column2,
(SELECT some_column FROM table_with_multiple_rows
LIMIT 1) AS column3;
어느 쪽이든, 당신의 하위 쿼리가 반환합니다
SELECT
123 AS colum1,
456 AS column2,
(SELECT some_column FROM table_with_multiple_rows
WHERE unique_column = 789) AS column3;
아니면 사용 LIMIT 1 : 어느 하나의 행 (테이블의 기본 또는 고유 키의 조건)를 지정하기 위해 WHERE 절을 사용 최대 한 행 (0 행과 일치 할 수 있으며,이 경우 하위 쿼리의 결과는 NULL입니다).
빈'SELECT '가 있기 때문에 가능성이 큽니다. –