sql >> Databáze >  >> RDS >> Mysql

MySQL:Zobrazit s poddotazem v omezení klauzule FROM

Měl jsem stejný problém. Chtěl jsem vytvořit pohled pro zobrazení informací za poslední rok z tabulky se záznamy od roku 2009 do roku 2011. Zde je původní dotaz:

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

Nástin řešení:

  1. vytvořte zobrazení pro každý dílčí dotaz
  2. nahradit poddotazy těmito zobrazeními

Zde je dotaz na řešení:

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;

Funguje to dobře na mysql 5.0.45, bez velké penalizace rychlosti (ve srovnání s provedením původního výběru poddotazu bez jakýchkoli zobrazení).



  1. Jak nastavit název tabulky v dynamickém SQL dotazu?

  2. Hierarchické dotazy v MySQL

  3. Proč se mé připojení ODBC nezdaří při spuštění načtení SSIS v sadě Visual Studio, ale ne při spuštění stejného balíčku pomocí nástroje Execute Package Utility

  4. Převeďte časové razítko na datum v dotazu MySQL