संक्षिप्त उत्तर, हाँ
लंबा उत्तर, आप एक चर का उपयोग करके इसका मिलान कर सकते हैं क्योंकि यह पंक्तियों को पुनरावृत्त करता है, अर्थात
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
. पर सेट करता है , और फिर परिकलित मान को आउटपुट करता है।
यह भी सुनिश्चित करने लायक है कि ऑर्डर सुसंगत है अन्यथा शेष पंक्तियों को किस क्रम में लौटाया जाता है, इस पर निर्भर करता है। यदि आप इसे वापस सामने रखना चाहते हैं, उदाहरण के लिए, आप इसे एक सबक्वायरी के रूप में उपयोग कर सकते हैं क्योंकि बाहरी क्वेरी परिकलित मानों से संबंधित होती है जिससे यह सुनिश्चित होता है कि शेष राशि सही रहती है यानी
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