ホームページ >データベース >mysql チュートリアル >MySQL の「ビューの SELECT には FROM 句にサブクエリが含まれています」エラーを解決する方法はありますか?

MySQL の「ビューの SELECT には FROM 句にサブクエリが含まれています」エラーを解決する方法はありますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-27 12:51:09674ブラウズ

How to Resolve MySQL's

「ビューの SELECT に FROM 句のサブクエリが含まれています」エラーのトラブルシューティング

FROM にサブクエリを含むクエリを使用してビューを作成する場合この句を使用すると、MySQL で「ビューの 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 では、「ビューの 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 の「ビューの SELECT には FROM 句にサブクエリが含まれています」エラーを解決する方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。