Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL:Lihat dengan Subquery di FROM Clause Limitation

Saya memiliki masalah yang sama. Saya ingin membuat tampilan untuk menampilkan informasi tahun terakhir, dari tabel dengan catatan dari 2009 hingga 2011. Berikut kueri aslinya:

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

Garis besar solusi:

  1. buat tampilan untuk setiap subkueri
  2. ganti subkueri dengan tampilan tersebut

Berikut pertanyaan solusi:

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;

Ini bekerja dengan baik di mysql 5.0.45, tanpa banyak penalti kecepatan (dibandingkan dengan mengeksekusi sub-kueri asli yang dipilih tanpa tampilan apa pun).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dalam kueri MySQL, mengapa menggunakan join alih-alih di mana?

  2. Gambaran Umum Replikasi Cluster-to-Cluster

  3. Cara Menjalankan Prosedur Tersimpan Di MySQL Workbench

  4. Apakah MySQL melanggar standar dengan mengizinkan memilih kolom yang bukan bagian dari grup berdasarkan klausa?

  5. Baris pivot MySQL menjadi jumlah kolom dinamis