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