Jawaban singkat, ya
Jawaban yang lebih panjang, Anda dapat menggunakan variabel untuk menghitungnya saat ia mengulangi baris, mis.
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
memastikan bahwa @Balance diinisialisasi ke 0 sebelum Anda mulai. Untuk setiap baris kemudian set @Balance menjadi @Balance + In - Out
, lalu menampilkan nilai yang dihitung.
Juga ada baiknya memastikan ORDER konsisten karena jika tidak, Saldo akan bervariasi tergantung pada urutan baris yang dikembalikan. Jika Anda ingin memesannya kembali ke depan, misalnya, Anda dapat menggunakan ini sebagai subkueri karena kueri luar berhubungan dengan nilai yang dihitung sehingga memastikan Saldo tetap benar yaitu
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