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

MySQL:Tại sao tối đa N thành viên này cho mỗi truy vấn nhóm hoạt động?

Truy vấn con tương quan trả về số lượng người có cùng quốc gia và id cao hơn. Vì vậy, nếu bạn so sánh nó với < 2 bạn sẽ chỉ chọn hai id cao nhất cho mỗi quốc gia. Bạn có thể hiểu rõ hơn về điều này bằng cách xem kết quả của việc chọn truy vấn con thay vì sử dụng nó như một ràng buộc:

SELECT co.id, co.person, co.country,
    (
        SELECT COUNT(*)
        FROM person ci
        WHERE  co.country = ci.country      -- controlling grouping column
        AND co.id < ci.id                       -- controlling min or max 
    ) AS higher_ids
FROM person co

https://dbfiddle.uk/?rdbms=mysql_8.0&fidfedle469d09e97e e

Lưu ý rằng trừ khi có các tối ưu hóa cụ thể đang tìm kiếm mẫu này, điều mà tôi rất nghi ngờ, truy vấn này sẽ là O (N ^ 2).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP MySQLI Ngăn chặn SQL Injection

  2. Cách tạo chức năng gửi lại liên kết email trong Laravel

  3. Kết nối ADO và msqli rất chậm

  4. Tại sao các thủ tục được lưu trữ vẫn không được hỗ trợ trong Rails (3+)?

  5. MySQL:Làm thế nào để kích hoạt từ chối nhân viên chưa đủ tuổi?