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

Sự khác biệt về ngữ nghĩa giữa WHERE và HAVING là gì?

HAVING hoạt động trên hàng tóm tắt - WHERE đang hoạt động trên toàn bộ bảng trước GROUP BY được áp dụng. (Bạn không thể đặt GROUP BY sang một bên, HAVING là một mệnh đề được dành riêng để sử dụng với GROUP BY - loại bỏ GROUP BY không thay đổi hành động ngầm diễn ra ở hậu trường).

Cũng cần lưu ý rằng vì điều này, WHERE có thể sử dụng chỉ mục trong khi HAVING không thể. (Trong các tập kết quả chưa được nhóm siêu nhỏ, về mặt lý thuyết, bạn có thể sử dụng một chỉ mục cho HAVING , nhưng tôi chưa bao giờ thấy trình tối ưu hóa truy vấn thực sự được triển khai theo cách này).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia vào cùng một bàn nhiều hơn một lần

  2. loại cha con đệ quy mysql (cây)

  3. Chuyển đổi kết quả từ cơ sở dữ liệu jQuery

  4. mysqldump với mệnh đề --where không hoạt động

  5. 3 Điểm hàng đầu - MySQL