Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:Xem với Truy vấn con trong Giới hạn Mệnh đề FROM

Tôi đã từng gặp vấn đề tương tự. Tôi muốn tạo một dạng xem để hiển thị thông tin của năm gần đây nhất, từ một bảng có các bản ghi từ năm 2009 đến năm 2011. Đây là truy vấn ban đầu:

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

Đề cương giải pháp:

  1. tạo chế độ xem cho từng truy vấn con
  2. thay thế các truy vấn phụ bằng các chế độ xem đó

Đây là truy vấn giải pháp:

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;

Nó hoạt động tốt trên mysql 5.0.45 mà không bị phạt nhiều về tốc độ (so với việc thực hiện lựa chọn truy vấn phụ ban đầu mà không có bất kỳ chế độ xem nào).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:câu lệnh SELECT có phân biệt chữ hoa chữ thường không?

  2. Làm thế nào để nhận được sự khác biệt trong năm từ hai ngày khác nhau?

  3. Sử dụng Mẫu hình thành đám mây để tạo các phiên bản MySQL trên RDS

  4. Sử dụng tệp .php để tạo kết xuất MySQL

  5. Tôi có thể kết hợp các API MySQL trong PHP không?