Trung BìnhDatabase iconDatabase

WHERE và HAVING trong SQL khác nhau như thế nào?

Execution order là chìa khóa: WHERE chạy TRƯỚC GROUP BY (lọc individual rows), HAVING chạy SAU (lọc groups).

  • WHERE không dùng được aggregate vì aggregation chưa xảy ra — WHERE COUNT(*) > 5 là syntax error.
  • HAVING dùng được aggregate: HAVING COUNT(*) > 5, HAVING SUM(amount) > 1000.

Ví dụ rõ ràng: SELECT dept, COUNT() FROM employees WHERE salary > 50000 GROUP BY dept HAVING COUNT() > 3 — WHERE loại employees lương thấp trước, GROUP BY nhóm, HAVING giữ dept có > 3 employees lương cao.

Xem toàn bộ Database cùng filter theo level & chủ đề con.

Mở danh sách Database