sql >> データベース >  >> RDS >> Mysql

MySQL:FROM句の制限でサブクエリを使用して表示

    私も同じ問題を抱えていました。 2009年から2011年までのレコードを含むテーブルから、直近の年の情報を表示するビューを作成したかったのです。元のクエリは次のとおりです。

    SELECT a.* 
    FROM a 
    JOIN ( 
      SELECT a.alias, MAX(a.year) as max_year 
      FROM a 
      GROUP BY a.alias
    ) b 
    ON a.alias=b.alias and a.year=b.max_year
    

    ソリューションの概要:

    1. サブクエリごとにビューを作成する
    2. サブクエリをそれらのビューに置き換えます

    ソリューションクエリは次のとおりです。

    CREATE VIEW v_max_year AS 
      SELECT alias, MAX(year) as max_year 
      FROM a 
      GROUP BY a.alias;
    
    CREATE VIEW v_latest_info AS 
      SELECT a.* 
      FROM a 
      JOIN v_max_year b 
      ON a.alias=b.alias and a.year=b.max_year;
    

    mysql 5.0.45で正常に動作しますが、速度が大幅に低下することはありません(ビューなしで元のサブクエリselectを実行する場合と比較して)。



    1. CASE式の汚い秘密

    2. SQL Serverテーブルの主キーをどのように一覧表示しますか?

    3. DBCCCheckDB機能の概要

    4. Oracle:パフォーマンスの一括収集