Tôi chỉ nhầm lẫn với chuỗi thực hiện truy vấn SQL khi chúng tôi sử dụng GROUP BY và HAVING với mệnh đề WHERE. Cái nào được thực hiện trước? Trình tự là gì?Trình tự thực hiện mệnh đề Group By, Having và Where trong SQL Server là gì?
Trả lời
theo thứ tự:
TỪ & THAM GIA s xác định & hàng lọc
ĐÂU hơn bộ lọc trên các hàng
GROUP BY kết hợp những hàng thành các nhóm
CÓ bộ lọc nhóm
ORDER BY sắp xếp các hàng/nhóm
LIMIT còn lại bộ lọc trên các hàng/nhóm còn lại
WHERE là lần đầu tiên, sau đó bạn GROUP kết quả của truy vấn và cuối cùng nhưng không kém phần HAVING-clause được thực hiện để lọc kết quả được nhóm. Đây là thứ tự "hợp lý", tôi không biết làm thế nào điều này được thực hiện kỹ thuật trong động cơ.
Worth thêm rằng tôi ưu hoa có thể di chuyển các mệnh đề từ HAVING đến WHERE nếu chúng không phụ thuộc vào tổng hợp. Điều này sẽ không ảnh hưởng đến kết quả được hiển thị. –
Tôi nghĩ rằng nó được thực hiện trong công cụ như Matthias nói: WHERE, GROUP BY, HAVING
Được cố gắng tìm một tuyến tham khảo liệt kê toàn bộ chuỗi (ví dụ: "SELECT" xuất phát phải xuống ở phía dưới) , nhưng tôi không thể tìm thấy nó. Nó được trình bày chi tiết trong một cuốn sách "Bên trong Microsoft SQL Server 2005" Tôi đọc cách đây không lâu, bởi chất lượng rắn Học
Edit: Tìm thấy một liên kết: http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx
Giải thích rất hay bạn liên kết với :-). – sleske
Liên kết đã chết.Nếu bạn có thể sửa chữa nó, nó sẽ là tuyệt vời :) –
Hãy suy nghĩ về những gì bạn cần phải làm gì nếu bạn muốn thực hiện:
- ĐÂU: cần nó để thực hiện JOIN hoạt động.
- GROUP BY: Bạn chỉ định Nhóm theo "nhóm" kết quả trên tham gia, sau đó nó phải sau thao tác JOIN, sau khi sử dụng WHERE.
- HAVING: HAVING là để lọc theo biểu thức GROUP BY nói. Sau đó, nó được thực hiện sau khi GROUP BY.
Thứ tự là WHERE, GROUP BY and HAVING.
ok giải thích. – Geshan
Điều bạn giải thích ở đây là rực rỡ. Nó xóa bỏ nghi ngờ của tôi liên quan đến HAVING. Vì vậy, để tóm tắt - GROUP BY & HAVING hoạt động giống như SELECT & WHERE. Mệnh đề HAVING luôn chạy trên dữ liệu bảng COMPLETE lấy điều kiện GROUP BY trong ảnh và KHÔNG TRÊN dữ liệu GROUPED. –
CHỌN
TỪ
JOIN
ĐÂU
GROUP By
CÓ
TRÌNH TỰ BY
Điều này thực sự sai. Theo MS Certified Trainers và tài liệu đào tạo chính thức, Order By là sau khi chọn. Loại hợp lý khi bạn nghĩ về nó. Nó sẽ là ngu ngốc để đặt hàng một bảng ảo mà bạn chưa được lấy và dán. :) –
Trong dưới đây theo thứ tự
- TỪ & THAM GIA
- ĐÂU
- GROUP BY
- CÓ
- CHỌN
- ORDER BY
- LIMIT
Trong Oracle 12c, bạn có thể chạy mã ở cả hai dãy bên dưới:
Where
Group By
Having
Hoặc
Where
Having
Group by
Dưới đây là hoàn chỉnh trình tự cho máy chủ sql:
1. FROM
2. ON
3. JOIN
4. WHERE
5. GROUP BY
6. WITH CUBE or WITH ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY
11. TOP
Vì vậy, từ danh sách trên, bạn có thể dễ dàng hiểu được chuỗi thực hiện GROUP BY, HAVING and WHERE
đó là:
1. WHERE
2. GROUP BY
3. HAVING
Bạn có thể tìm thêm thông tin về nó Here
- 1. Mysql GROUP BY và COUNT cho nhiều mệnh đề WHERE
- 2. Có thể có mệnh đề WHERE sau mệnh đề HAVING?
- 3. SQL Server Group By Tháng
- 4. Cách kết hợp GROUP BY, ORDER BY và HAVING
- 5. Thứ tự đúng của các mệnh đề này khi viết một truy vấn SQL là gì?
- 6. SQL Server: mệnh đề GROUP BY để có được giá trị bằng dấu phẩy
- 7. tuyên bố trường hợp trong mệnh đề where - SQL Server
- 8. Vấn đề SQL "GROUP BY"
- 9. IS NULL vs = NULL trong mệnh đề where + SQL Server
- 10. mệnh đề SQL Server ORDER BY trong subquery
- 11. LINQ to SQL GROUP BY HAVING tạo ra chỉ như là subquery
- 12. Thực thi mệnh đề WHERE có điều kiện trong SQL
- 13. MapReduce và SQL GROUP BY
- 14. SQL Server loại bỏ SPACE trong GROUP BY
- 15. GROUP BY trong CẬP NHẬT mệnh đề FROM
- 16. Tại sao SQL Server không thực hiện mệnh đề WHERE theo mặc định?
- 17. SQL Query tổng hợp có thể không xuất hiện trong mệnh đề WHERE
- 18. LIKE và NULL trong mệnh đề WHERE trong SQL
- 19. PostgreSQL tương đương với SQL Server GROUP BY VỚI ROLLUP
- 20. SQL Coalesce trong mệnh đề WHERE
- 21. SQL COUNT với mệnh đề WHERE
- 22. Thêm mệnh đề WHERE vào SQL động/lập trình
- 23. Oracle CONNECT BY khoản sau mệnh đề GROUP
- 24. SQL Và NULL Giá trị trong mệnh đề where
- 25. Sử dụng 'OR' giữa mệnh đề HAVING và WHERE trong MySQL?
- 26. COUNT kết quả từ Truy vấn SQL với mệnh đề HAVING
- 27. Sử dụng một mệnh đề HAVING trong một câu lệnh UPDATE
- 28. LINQ 2 SQL - Generic mệnh đề where
- 29. Điều khoản SQL "GROUP BY 1" có nghĩa là gì?
- 30. SQL - LEFT OUTER JOIN và mệnh đề WHERE
có tham chiếu đến điều này không ?? – Geshan
@Geshan, hãy xem xét 'SET SHOWPLAN_ALL ON' –
Tính gọn gàng và thông tin. Hãy tiếp tục phát huy! +1 –