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

MySQL-相関サブクエリで集合データを制限する場合のネストされたサブクエリの代替

    いいえ、FROMでcorrealtedサブクエリを使用することはできません 句。ただし、ONで使用できます 条件:

    SELECT AVG(d.DailyData1) Data1_20DayAvg 
           --- other aggregate stuff on d (Datatable)
    FROM 
          ( SELECT '2012-01-23' AS DateChecked
          ) AS dd
      JOIN
          DataTable AS d
        ON
          d.Date <= dd.DateChecked
        AND
          d.Date >= COALESCE( 
          ( SELECT DailyData1 
            FROM DataTable AS last20 
            WHERE Date <= dd.DateChecked 
              AND (other conditions for last20)
            ORDER BY Date DESC 
            LIMIT 1 OFFSET 19
          ), '1001-01-01'   )
    WHERE (other conditions for d Datatable)
    

    同様に、多くの日付で:

    SELECT dd.DateChecked 
         , AVG(d.DailyData1) Data1_20DayAvg 
           --- other aggregate stuff on d (Datatable)
    FROM 
          ( SELECT DISTINCT Date AS DateChecked
            FROM DataTable 
          ) AS dd
      JOIN
          DataTable AS d
        ON
          d.Date <= dd.DateChecked
        AND
          d.Date >= COALESCE( 
          ( SELECT DailyData1 
            FROM DataTable AS last20
            WHERE Date <= dd.DateChecked 
              AND (other conditions for last20)
            ORDER BY Date DESC 
            LIMIT 1 OFFSET 19
          ), '1001-01-01'   )
    WHERE (other conditions for d Datatable)
    GROUP BY 
          dd.DateChecked 
    

    どちらのクエリも、Datatable.Dateを想定しています UNIQUEがあります 制約。




    1. Mysqlエラー1005(HY000):テーブル'tmp'を作成できません(errno:13)

    2. 配列をSQLServerストアドプロシージャに渡す

    3. データベースの外部キー/主キーとしてのVARCHARは良いですか、悪いですか?

    4. OracleDatabaseでNLSパラメータの値を確認する方法