sự khác nhau giữa WHERE và HAVING
ai có thể giải thích cho em biết sự khác nhau giữa WHERE và HAVING trong SQL được không, em vẫn chưa rõ lắm.
liệu sau GROUP BY có dùng WHERE được không và vì sao?
Dùng được chứ.
WHERE - filter kết quả theo dòng
HAVING - filter kết quả theo GROUP
Ví dụ: bạn có 1 bảng như sau [3 trường student, subject, mark nhé]
A, math, 8
A, physics, 5
B, math, 4
C, physics, 9
Câu lệnh: SELECT student, sum[mark] from math GROUP BY student, nó sẽ ra
A, 13 [nó kiếm student giống nhau, ở đây 2 dòng đều có A nên lấy SUM]
B, 4
C, 9
Câu lệnh: SELECT student, sum[mark] from math WHERE mark > 5 GROUP BY student, nó sẽ ra
A, 8
C, 9
nó sẽ check WHERE từng dòng trước, sau đó mới GROUP BY
Câu lệnh: SELECT student, sum[mark] as s from math WHERE mark > 5 GROUP BY student HAVING s>8, nó sẽ ra
C,9
HAVING thì mới dùng với các điều kiện của cả nhóm [GROUP] như max, sum, count, … được [gọi là các hàm tổng hợp [AGGREGATE function] được define trên 1 tập hợp]
Chú ý: WHERE phải trước GROUP BY nhé.
Bạn ở trên nói đúng rồi, mình tóm tắt lại là Where thường dùng để tìm điều kiện cho thuộc tính của Bảng, còn Having thường dùng để tìm điều kiện trên các Function [SUM,AVG,COUNT…] trên các thuộc tính của Bảng.
Where : Là câu lệnh điều kiện trả kết quả đối chiếu với từng dòng .
Having : Là câu lệnh điều kiện trả kết quả đối chiếu cho nhóm [Sum,AVG,COUNT,…]
Vì vậy mà sau GROUP BY thì sẽ chỉ dùng được Having .
còn Where thì KHÔNG dùng được sau GROUP BY đâu nhé. bạn cứ cmd thì biết liền ý mà.
[HAVING có thể thay thế vị trí dùng cho WHERE. nhưng . ngược lại WHERE thì KHÔNG thể thay thế vị trí cho HAVING nhé bạn]
Sự khác biệt giữa HAVING và WHERE là gì?
Tôi phải đi theo hướng sai hoặc tôi đang có một khoảnh khắc ngu ngốc.
Sự khác biệt giữa HAVINGvà WHEREtrong một SQL SELECTtuyên bố là gì?
EDIT: Tôi đã đánh dấu câu trả lời của Steven là câu trả lời đúng vì nó chứa bit thông tin chính trên liên kết:
Khi GROUP BYkhông được sử dụng, HAVINGhành xử như một WHEREmệnh đề
Tình huống tôi đã thấy WHEREtrong không có GROUP BYvà là nơi sự nhầm lẫn của tôi bắt đầu. Tất nhiên, cho đến khi bạn biết điều này, bạn không thể chỉ định nó trong câu hỏi.
Rất cám ơn cho tất cả các câu trả lời đã được khai sáng.
- sql
- where
- having
NộI Dung:
- Biểu đồ so sánh
- Định nghĩa mệnh đề Where
- Định nghĩa của Mệnh đề Có
- Phần kết luận
SQL viết tắt của Structured Query Language; nó là ngôn ngữ cơ sở dữ liệu khai báo hoặc toàn diện được sử dụng để truy cập dữ liệu từ cơ sở dữ liệu.