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

Mysql giải pháp cho các chức năng cửa sổ

MySQL không hỗ trợ chức năng cửa sổ, nhưng bạn có thể sử dụng truy vấn con tương quan trong SELECT danh sách để truy xuất chính xác một cột:

SELECT
  event_id,
  event_type, 
  event_time,
  (SELECT COUNT(*) FROM events EC WHERE EC.event_type = E.event_type AND EC.event_time > E.event_time) AS subsequent_event_count
FROM
  events E
WHERE ...

Làm EXPLAIN nó. Điều này tương tự về mặt logic thực thi như CROSS APPLY trong SQL Server.

Một cách tiếp cận khác là tự tham gia:

SELECT
  E.event_id,
  E.event_type,
  E.event_time,
  COUNT(EC.event_id) AS subsequent_event_count
FROM
  events E
  LEFT JOIN events EC
    ON E.event_type = EC.event_type AND E.event_type < EC.event_type
GROUP BY
  E.event_id,
  E.event_type,
  E.event_time

Thực hiện kiểm tra cả hai cách tiếp cận về hiệu suất.

Bạn có thể thực hiện nhiều phép nối sáng tạo hơn, như

EC.event_time > E.event_time AND EC.event_time < E.event_time + INTERVAL 1 DAY


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiển thị dữ liệu mysql trong bảng html PHP

  2. Cách lưu trữ dữ liệu có chứa dấu ngoặc kép trong MySQL

  3. Chuyển đổi mã MySQL thành Access:GROUP_CONCAT và một bộ ba JOIN

  4. Tại sao find_in_set hoạt động nhưng mệnh đề IN

  5. Ví dụ về CURTIME () - MySQL