MySQL 스칼라 하위 쿼리는 한 행에서 정확히 하나의 열 값을 반환하며 단일 열이 허용되는 곳에서 사용할 수 있습니다. 다음은 스칼라 서브쿼리가 한 행이 아닌 다른 값을 반환하는 경우입니다 -
Case1 - 0개의 행을 반환하는 경우
서브 쿼리가 0행을 반환하는 경우 스칼라 서브 쿼리 표현식의 값은 NULL입니다.
Case2 - 둘 이상의 행을 반환하는 경우
서브 쿼리가 둘 이상의 행을 반환하는 경우 스칼라 하위 쿼리의 속성으로 인해 MySQL은 오류를 반환합니다.
다음 표의 데이터를 사용하는 예를 통해 이해할 수 있습니다. -
mysql> 고객에서 * 선택;+-------------+---------+| 고객 ID | 이름 |+-------------+----------+| 1 | 라훌 || 2 | 야쉬팔 || 3 | 가우라프 || 4 | Virender |+-------------+----------+4행 세트(0.00초)mysql> 예약에서 * 선택;+------ +-------------+------------+| 아이디 | 고객 아이디 | 일 |+--------+-------------+------------+| 1 | 1 | 2017-12-30 || 2 | 2 | 2017-12-28 || 3 | 2 | 2017-12-29 || 4 | 1 | 2017-12-25 || 5 | 3 | 2017-12-26 |+------+-------------+------------+5행 세트(0.00초)사전>이제 다음 쿼리는 한 행에 대해 정확히 하나의 열 값을 반환합니다. −
mysql> 고객의 이름 선택 WHERE customer_id =(id =3인 예약에서 Customer_id 선택);+---------+| 이름 |+---------+| Yashpal |+---------+1 행 세트(0.00초)이제 하위 쿼리가 0개의 행을 반환하면 스칼라 하위 쿼리 표현식의 값이 NULL임을 의미한다고 가정합니다. 다음 쿼리에 표시됩니다. -
mysql> 고객의 이름 선택 WHERE customer_id =(id =10인 예약에서 Customer_id 선택);빈 세트(0.00초)위 결과 집합에서 MySQL이 빈 집합, 즉 0개의 행을 반환하는 것을 볼 수 있습니다. 왜냐하면 스칼라 하위 쿼리 표현식의 값이 NULL(10과 같은 id가 없음)인 경우 때문입니다.
MySQL 쿼리와 함께 스칼라 하위 쿼리를 사용할 때의 제한 사항은 리터럴 값만 허용하는 명령문과 함께 스칼라 하위 쿼리를 사용할 수 있다는 것입니다. 예를 들어, LIMIT에는 리터럴 정수 인수가 필요하므로 스칼라 하위 쿼리를 사용하여 이러한 값을 제공할 수 없습니다.