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

Thêm các trường bí danh MySQL với nhau

Đây là thứ tự về cách mọi thứ được thực thi trong công cụ cơ sở dữ liệu.

Lưu ý rằng đây là một dạng xem ngữ nghĩa về cách mọi thứ được thực thi, cơ sở dữ liệu có thể thực hiện mọi thứ theo một 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.

  1. Đầu tiên, phần TỪ được đánh giá, tôi lấy dữ liệu từ đâu
  2. Sau đó, phần WHERE được đánh giá, chúng tôi quan tâm đến những hàng nào
  3. Sau đó, phần NHÓM BY được đánh giá, làm cách nào để chúng tôi kết hợp các hàng kết quả
  4. Sau đó, phần CÓ ĐƯỢC sẽ được đánh giá, chúng tôi quan tâm đến những nhóm nào
  5. Sau đó, phần ORDER BY được đánh giá, chúng ta muốn các hàng / nhóm đó theo thứ tự nào
  6. Cuối cùng, phần CHỌN được đánh giá, chúng tôi quan tâm đến những cột nào

Tuy nhiê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 đặt "GROUP BY 2" để nhóm theo cột thứ 2 trong phần CHỌN, nhưng nếu bạn tuân theo thứ tự trên, bây giờ bạn nên biết rằng lý do mà mã của bạn không 'không hiệu quả là không có cột nào có tên là total hoặc total2 (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 thực hiện khác.

Những gì bạn có thể làm là sử dụng một truy vấn phụ (miễn là bạn đang sử dụng phiên bản MySQL hỗ trợ điều này):

SELECT total, total2, total+total2 as grandtotal
FROM (
    SELECT sum(EXPR) as total, sum(EXPR) as total2
    FROM tablename
    ) x

Đánh dấu phần còn lại theo nhận xét.

Mặc dù vậy, tôi không biết nhiều về MySQL nên bạn có thể phải đặt bí danh cho truy vấn phụ:

...

    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 khi truy vấn phụ bí danh, vì vậy nếu cách trên không hoạt động, hãy thử cách này:

...

    FROM tablename
    ) x
      ^
      |
      +-- add this



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL xóa tất cả các hàng có id lớn hơn số đã cho

  2. Lưu trữ số thẻ tín dụng trong PHIÊN - các cách giải quyết?

  3. Tìm kiếm đối chiếu MySQL không phân biệt chữ hoa chữ thường trong đó a! =Ä

  4. ALTER TABLE ADD COLUMN mất nhiều thời gian

  5. Đã vượt quá thời gian chờ nhận được Khóa; thử bắt đầu lại giao dịch mặc dù tôi không sử dụng giao dịch