>데이터 베이스 >MySQL 튜토리얼 >MySQL의 'View's SELECT에는 FROM 절에 하위 쿼리가 포함되어 있습니다.' 오류를 해결하는 방법은 무엇입니까?

MySQL의 'View's SELECT에는 FROM 절에 하위 쿼리가 포함되어 있습니다.' 오류를 해결하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-27 12:51:09680검색

How to Resolve MySQL's

"뷰의 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 절에 하위 쿼리가 포함되어 있습니다." 오류가 발생합니다.

솔루션

이 문제를 해결하려면 별도의 뷰를 생성하는 것이 해결 방법입니다. 하위 쿼리의 경우 기본 보기에서 해당 보기를 참조합니다. 수행 방법은 다음과 같습니다.

  1. 크레딧 사용과 관련된 하위 쿼리에 대해 temp_view_used_credits라는 보기를 만듭니다.
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;
  1. 기본 보기 view_credit_status 만들기 temp_view_used_credits 사용 view:
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.