ホームページ >データベース >mysql チュートリアル >FROM 句の MySQL ビューとサブクエリ: 5.0 の制限を克服するには?
MySQL 5.0 ビューの FROM 句のサブクエリ: 制限事項と回避策
MySQL 5.0 ユーザーは、FROM 句にサブクエリを含むビューを作成しようとすると、「エラー 1349 (HY000): ビューの SELECT に FROM 句にサブクエリが含まれています。」というエラーが発生することがあります。サブクエリを含む複雑なクエリに基づいてビューを作成します。
考えられる回避策の 1 つは、サブクエリごとに個別のビューを作成し、サブクエリをこれらの派生ビューで置き換えることです。次のクエリの例を考えてみましょう:
<code class="language-sql">SELECT temp.UserName FROM ( SELECT u1.name AS UserName, COUNT(m1.UserFromId) AS SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId GROUP BY u1.name HAVING SentCount > 3 ) AS temp;</code>
この制限を回避するには、両方のサブクエリに対してビューを作成できます。
<code class="language-sql">CREATE VIEW v_user_sent_count AS SELECT u1.name AS UserName, COUNT(m1.UserFromId) AS SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId GROUP BY u1.name; CREATE VIEW v_users_sent_over_3 AS SELECT UserName FROM v_user_sent_count WHERE SentCount > 3;</code>
元のクエリで、サブクエリを派生ビューに置き換えます。
<code class="language-sql">SELECT UserName FROM v_users_sent_over_3;</code>
このアプローチにより、FROM 句のサブクエリ制限が存在するバージョンの MySQL で複雑なサブクエリに基づいたビューを作成できます。ただし、すべてのサブクエリが FROM 句なしで表現できるわけではないことに注意してください。たとえば、並べ替えやフィルタリングに使用されるサブクエリには、相関サブクエリやウィンドウ関数の使用など、他の方法が必要になる場合があります。
以上がFROM 句の MySQL ビューとサブクエリ: 5.0 の制限を克服するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。