簡短的回答,是的
較長的答案,你可以使用一個變量來吻合起來,因爲它迭代下來的行,即
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
確保@Balance之前被初始化爲0你先來。對於每行,然後將@Balance設置爲@Balance + In - Out
,然後輸出計算出的值。
另外值得一提的是,ORDER是一致的,否則天平將根據返回的行的順序而變化。如果你想,然後命令它回到前面,例如,你可以使用它作爲一個子查詢作爲再查詢外層涉及這樣的計算值確保平衡仍然正確即
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
如何與分頁,我覺得這個查詢不會運作良好,餘額將不順利 – 2016-11-27 12:25:50
@PutraLZendrato我怕我不明白的問題 – 2016-11-29 10:20:34
您好西蒙,我的意思是,如何在數據行很大,例如,我們有100個數據,但不會在一個頁面中加載。所以,我們分成2頁(分頁工作)。我認爲運行平衡不起作用。 – 2016-11-30 13:00:43