Chức năng MySQL và cửa sổ


30

Có vẻ như MySQLkhông hỗ trợ các chức năng cửa sổ.
Ví dụ: đơn giản: COUNT(*) OVER() AS cntkhông hoạt động.
Điều tôi không chắc là nếu điều này cũng áp dụng cho phiên bản thương mại (tôi giả sử phiên bản cộng đồng là tập hợp con giới hạn).
Nếu không, làm thế nào để làm việc xung quanh tính năng còn thiếu này?


3
Phiên bản cộng đồng của MySQL Server không phải là tập hợp con giới hạn theo bất kỳ ý nghĩa nào. Sự khác biệt là trong các tiện ích bổ sung và plugin không ảnh hưởng đến chức năng cốt lõi.
Michael - sqlbot

Hãy xem cách giải quyết này tại đâyđây
StuartLC

Trên thực tế, MySQL9 hỗ trợ nó. Tôi đã được sử dụng gấu trúc thay vì loại hút.
Andrew Scott Evans

1
MySQL 8 hỗ trợ chức năng cửa sổ. Để tham khảo: dev.mysql.com/doc/refman/8.0/en/window-fifts.html
gvgvgvijayan

MySQL hỗ trợ các chức năng của cửa sổ kể từ phiên bản 8.0. Liên kết này có thể giúp đỡ.
Hamid Mohayeji

Câu trả lời:


36

MySQL không hỗ trợ Chức năng cửa sổ (*). Có một cái mà chúng ta gọi là "chức năng cửa sổ của một người nghèo" dưới dạng GROUP_CONCAT () .

Có rất nhiều thủ thuật sử dụng GROUP_CONCATđể mô phỏng các chức năng của cửa sổ. Chúng không đẹp bằng (cú pháp) và đôi khi quá hạn chế. Tôi đã viết một vài. Xem bài đăng trên blog của tôi phàn nàn về các chức năng cửa sổ bị thiếu và liên kết với các giải pháp khác nhau dựa trên GROUP_CONCAT.

Cụ thể, Chọn dữ liệu cột không tổng hợp cụ thể trong GROUP BYSQL: chọn N bản ghi hàng đầu cho mỗi nhóm, một giải pháp khác có thể khiến bạn quan tâm và có thể giúp bạn bắt đầu.

Những điều bạn cần lưu ý về GROUP_CONCAT():

  • Co thể sử dụng DISTINCT
  • Co thể sử dụng ORDER BY ... ASC/DESC
  • Có thể đặt SEPARATOR
  • Như bất kỳ hàm tổng hợp nào - nó loại bỏ các giá trị NULL; nhiều thủ thuật về điều đó.

(*) Hỗ trợ cho các chức năng của Window đã được thêm vào trong MySQL 8


MySQL hỗ trợ các chức năng của cửa sổ kể từ Phiên bản 8
Tối đa

GROUP_CONCAT không phải là một chức năng cửa sổ, nó là một chức năng thiết lập theo thứ tự.
SQLRaptor

1
@QueryRaptor không ai tuyên bố điều đó.
ypercubeᵀᴹ

11

Cần lưu ý rằng MariaDB 10.2 (phát hành vào tháng 5 năm 2017) có các chức năng cửa sổ . Đó chắc chắn là một con đường để theo đuổi nếu bạn cần các chức năng của MySQL và cửa sổ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.