Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да получите достъп до командния ред за xampp на Windows

  2. Примери за MySQL SOUNDEX().

  3. LINQ за Java инструмент

  4. Как да инсталирате MySQL 8.0 на CentOS 8 / RHEL 8

  5. MySQL Trigger след актуализация само ако редът е променен