MySQL 5.1 より前のビューの制限: FROM 句内のサブクエリ
MySQL 5.1 より前のバージョンでは、ビューの FROM 句にサブクエリが含まれている場合、エラーが報告されます。この制限により、データベース クエリを構築する際の柔軟性が低下します。
根本原因
歴史的に、MySQL エンジンにはビューの FROM 句でサブクエリを処理するための実装がありませんでした。これは主にエンジンの複雑さとパフォーマンスの問題によるものです。
解決策
この制限を回避するには、次の方法を使用できます:
解決策の例
次のクエリの例を考えてみましょう:
<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">SELECT dt.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 ) dt</code>
クエリの制限
上記の回避策はほとんどのシナリオをカバーしていますが、FROM 句のサブクエリが必須となる特殊なケースがいくつかあります。 MySQL 5.1 より前のバージョンでは、このタイプのクエリに対する直接的な回避策はありません。
以上がMySQL ビュー (5.1 より前) で FROM 句でサブクエリを使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。