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

Tính toán số dư với mysql

Câu trả lời ngắn gọn, có

Câu trả lời dài hơn, bạn có thể sử dụng một biến để kiểm đếm nó khi nó lặp xuống các hàng, tức là

SELECT 
    `table`.`ID`,
    `table`.`In`,
    `table`.`Out`,
    @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
FROM `table`, (SELECT @Balance := 0) AS variableInit
ORDER BY `table`.`ID` ASC

, (SELECT @Balance := 0) AS variableInit đảm bảo rằng @Balance được khởi tạo bằng 0 trước khi bạn bắt đầu. Đối với mỗi hàng, nó đặt @Balance thành @Balance + In - Out , và sau đó xuất ra giá trị được tính toán.

Ngoài ra, cần đảm bảo ĐƠN ĐẶT HÀNG nhất quán vì nếu không, Số dư sẽ thay đổi tùy thuộc vào thứ tự mà các hàng được trả lại. Ví dụ:nếu bạn muốn đặt nó trở lại trước, bạn có thể sử dụng điều này như một truy vấn con vì sau đó truy vấn bên ngoài xử lý các giá trị được tính toán, do đó đảm bảo Số dư vẫn chính xác, tức là

SELECT
    `balanceCalculation`.`ID`,
    `balanceCalculation`.`In`,
    `balanceCalculation`.`Out`,
    `balanceCalculation`.`Balance`
FROM (
    SELECT 
        `table`.`ID`,
        `table`.`In`,
        `table`.`Out`,
        @Balance := @Balance + `table`.`In` - `table`.`Out` AS `Balance`
    FROM `table`, (SELECT @Balance := 0) AS variableInit
    ORDER BY `table`.`ID` ASC
) AS `balanceCalculation`
ORDER BY `balanceCalculation`.`ID` DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. biến được xác định toàn cầu tùy chỉnh mysql

  2. mysql_fetch_assoc ():đối số được cung cấp không phải là tài nguyên kết quả MySQL hợp lệ trong php

  3. Tôi có thể dựa vào trường hợp tên cột trong mysql một cách an toàn không?

  4. Xây dựng hệ thống bản tin với PHP và MySQL

  5. Hàm MySQL COS () - Trả về Cosine của một số trong MySQL