집 >데이터 베이스 >MySQL 튜토리얼 >MySQL의 'View's SELECT에는 FROM 절에 하위 쿼리가 포함되어 있습니다.' 오류를 해결하는 방법은 무엇입니까?
"뷰의 SELECT에 FROM 절에 하위 쿼리가 포함되어 있습니다." 오류 문제 해결
FROM에 하위 쿼리가 포함된 쿼리를 사용하여 뷰를 생성하는 경우 절을 사용하면 MySQL에서 "View의 SELECT에 FROM 절에 하위 쿼리가 포함되어 있습니다."라는 오류 메시지가 나타날 수 있습니다. 이 오류는 MySQL이 뷰 정의의 FROM 절에서 하위 쿼리를 허용하지 않음을 나타냅니다.
오류 세부 정보
다음 예를 고려하세요.
create view view_credit_status as ( select credit_orders.client_id, sum(credit_orders.number_of_credits) as purchased, ifnull(t1.credits_used,0) as used from credit_orders left outer join ( select * from ( select credit_usage.client_id, sum(credits_used) as credits_used from credit_usage group by credit_usage.client_id ) as t0 ) as t1 on t1.client_id = credit_orders.client_id where credit_orders.payment_status='Paid' group by credit_orders.client_id );
이 쿼리는 FROM 절에 하위 쿼리를 포함하는 view_credit_status라는 뷰를 생성하려고 시도합니다. 그러나 MySQL에서는 "View's SELECT에 FROM 절에 하위 쿼리가 포함되어 있습니다." 오류가 발생합니다.
솔루션
이 문제를 해결하려면 별도의 뷰를 생성하는 것이 해결 방법입니다. 하위 쿼리의 경우 기본 보기에서 해당 보기를 참조합니다. 수행 방법은 다음과 같습니다.
create view temp_view_used_credits as select credit_usage.client_id, sum(credits_used) as credits_used from credit_usage group by credit_usage.client_id;
create view view_credit_status as ( select credit_orders.client_id, sum(credit_orders.number_of_credits) as purchased, ifnull(temp_view_used_credits.credits_used,0) as used from credit_orders left outer join temp_view_used_credits on temp_view_used_credits.client_id = credit_orders.client_id where credit_orders.payment_status='Paid' group by credit_orders.client_id );
이 접근 방식은 하위 쿼리를 별도의 뷰로 분리하여 MySQL이 제한 사항을 위반하지 않고 기본 뷰에서 참조할 수 있도록 합니다.
위 내용은 MySQL의 'View's SELECT에는 FROM 절에 하위 쿼리가 포함되어 있습니다.' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!