집 >데이터 베이스 >MySQL 튜토리얼 >MySQL이 뷰의 FROM 절에서 하위 쿼리를 금지하는 이유는 무엇입니까?
"뷰의 SELECT에 FROM 절에 하위 쿼리가 포함되어 있음": MySQL 뷰 제약 조건 이해
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)
다음 하위 쿼리가 포함되어 있기 때문에 "View's SELECT에 FROM 절에 하위 쿼리가 포함되어 있습니다."라는 오류가 발생합니다.
(select * from (select credit_usage.client_id, sum(credits_used) as credits_used from credit_usage group by credit_usage.client_id) as t0 )
이 문제를 해결하려면 문제가 발생하면 하위 쿼리에 대해 별도의 보기를 만들 수 있습니다. 예를 들어 다음 보기를 생성할 수 있습니다.
create view view_credit_orders as (select credit_orders.client_id, sum(credit_orders.number_of_credits) as purchased from credit_orders where credit_orders.payment_status='Paid' group by credit_orders.client_id) create view view_credit_usage as (select credit_usage.client_id, sum(credit_usage.credits_used) as credits_used from credit_usage group by credit_usage.client_id)
이러한 보기가 생성되면 다음 수정된 쿼리를 사용하여 원본 보기를 생성할 수 있습니다.
create view view_credit_status as (select view_credit_orders.client_id, view_credit_orders.purchased, ifnull(view_credit_usage.credits_used,0) as used from view_credit_orders left outer join view_credit_usage on view_credit_orders.client_id = view_credit_usage.client_id)
위 내용은 MySQL이 뷰의 FROM 절에서 하위 쿼리를 금지하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!