Đây là thứ tự về cách mọi thứ được thực hiện trong một công cụ cơ sở dữ liệu. Lưu ý rằng đây là một cái nhìn ngữ nghĩa về cách mọi thứ được thực hiện, cơ sở dữ liệu có thể làm những thứ theo thứ tự khác, nhưng nó phải tạo ra kết quả như thể nó đã được thực hiện theo cách này.
- Đầu tiên FROM phần được đánh giá, nơi nào tôi nhận được dữ liệu từ
- Sau đó WHERE phần được đánh giá, trong đó hàng được chúng tôi quan tâm đến
- Sau đó, GROUP BY-phần được đánh giá, làm thế nào làm chúng tôi kết hợp các hàng kết quả
- Sau đó, phần HAVING được đánh giá, trong đó nhóm chúng ta quan tâm đến
- Sau đó ORDER BY-phần được đánh giá, mà để chúng ta muốn những hàng/nhóm
- Cuối cùng, CHỌN-phần được đánh giá, mà colu Chúng tôi quan tâm đến
Một số công cụ cơ sở dữ liệu cho phép bạn phá vỡ điều này, bằng cách saing "GROUP BY 2" để nhóm theo cột thứ 2 trong phần SELECT, nhưng nếu bạn tuân theo thứ tự trên, bạn nên biết ngay bây giờ rằng lý do mã của bạn không hoạt động là không có cột có tổng số tên hoặc tổng số2 (chưa).
Nói cách khác, bạn cần lặp lại hai biểu thức hoặc tìm cách khác để thực hiện.
gì bạn có thể làm là sử dụng một phụ truy vấn (cung cấp cho bạn đang ở trên một phiên bản MySQL hỗ trợ này):
SELECT total, total2, total+total2 as grandtotal
FROM (
SELECT sum(EXPR) as total, sum(EXPR) as total2
FROM tablename
) x
Striking ra phần còn lại theo nhận xét.
Tôi không biết nhiều về MySQL mặc dù vậy bạn có thể phải bí danh tiểu truy vấn:
...
FROM tablename
) AS x
^-+^
|
+-- add this
Một số công cụ cơ sở dữ liệu cũng không cho phép sử dụng từ khóa AS subqueries khi răng cưa, vì vậy nếu doesn trên 't làm việc, hãy thử này:
...
FROM tablename
) x
^
|
+-- add this
Nguồn
2010-07-30 16:55:30
Tôi đã có một cơ hội để kiểm tra câu trả lời của tôi và đã phát hiện ra tôi đã sai. Do đó tôi đã xóa nó. Cảm ơn bạn đã chỉ ra sai lầm của tôi. –