ホームページ >データベース >mysql チュートリアル >MySQL の「ビューの SELECT には FROM 句にサブクエリが含まれています」エラーを解決する方法はありますか?
「ビューの 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 句にサブクエリが含まれています」というエラーが発生します。
解決策
この問題を解決するには、別のビューを作成することが回避策です。サブクエリの場合は、プライマリ ビューからそれらのビューを参照します。その方法は次のとおりです。
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 の「ビューの SELECT には FROM 句にサブクエリが含まれています」エラーを解決する方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。