Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL:Widok z podzapytanie w Ograniczeniu klauzuli FROM

Miałem ten sam problem. Chciałem stworzyć widok pokazujący informacje z ostatniego roku, z tabeli z rekordami od 2009 do 2011. Oto oryginalne zapytanie:

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

Zarys rozwiązania:

  1. utwórz widok dla każdego podzapytania
  2. zastąp podzapytania tymi widokami

Oto zapytanie o rozwiązanie:

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;

Działa dobrze na mysql 5.0.45, bez znacznej utraty szybkości (w porównaniu z wykonaniem oryginalnego wyboru podzapytania bez żadnych widoków).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. xampp MySQL nie uruchamia się

  2. Użyte instrukcje SELECT mają różną liczbę kolumn (REDUX!!)

  3. Różnice między bazami danych SQL i NoSQL — porównanie MySQL i MongoDB

  4. Klasy zagnieżdżone — CustomRowMapper !! To już nie problem!! - Część 1

  5. Jak rozwiązać problem Nie można załadować wtyczki uwierzytelniającej „caching_sha2_password”