
"뷰의 SELECT에 FROM 절에 하위 쿼리가 포함되어 있습니다." 오류 문제 해결
FROM에 하위 쿼리가 포함된 쿼리를 사용하여 뷰를 생성하는 경우 절을 사용하면 MySQL에서 "View의 SELECT에 FROM 절에 하위 쿼리가 포함되어 있습니다."라는 오류 메시지가 나타날 수 있습니다. 이 오류는 MySQL이 뷰 정의의 FROM 절에서 하위 쿼리를 허용하지 않음을 나타냅니다.
오류 세부 정보
다음 예를 고려하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 절에 하위 쿼리가 포함되어 있습니다." 오류가 발생합니다.
솔루션
이 문제를 해결하려면 별도의 뷰를 생성하는 것이 해결 방법입니다. 하위 쿼리의 경우 기본 보기에서 해당 보기를 참조합니다. 수행 방법은 다음과 같습니다.
- 크레딧 사용과 관련된 하위 쿼리에 대해 temp_view_used_credits라는 보기를 만듭니다.
1 2 3 4 | 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;
|
로그인 후 복사
- 기본 보기 view_credit_status 만들기 temp_view_used_credits 사용 view:
1 2 3 4 5 6 7 8 9 10 | 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!