在下面的代码中,我用来计算银行帐户表的运行余额的代码工作正常。我得到了预期的运行平衡。

SELECT
    `balance1`.`ID`,
    `balance1`.`Date`,
    `balance1`.`Credit`,
    `balance1`.`Debit`,
    @Balance := @Balance + `balance1`.`Credit` - `balance1`.`Debit` AS `Balance`,
        `balance1`.`Remarks`
FROM `balance1`, (SELECT @Balance := 0) AS variableInit
ORDER BY `balance1`.`ID` ASC


但是,如果我想显示表格的最后10个项目怎么办。首先将表以降序排序(限制为10),然后再次以升序排序将不起作用,因为将影响到作为计算列的Balance列。

有什么方法可以显示最后10行而不影响Balance列中的计算?

最佳答案

如何使用现有查询作为子查询来获取前10个balance1.ID降序排序。然后在外部查询中按升序排序balance1.ID

SELECT * FROM
(
  SELECT b.ID, b.Date, b.Credit, b.Debit, b.Remarks,
         @Balance := @Balance + b.Credit - b.Debit AS Balance
  FROM balance1 b, (SELECT @Balance := 0) AS variableInit
  ORDER BY b.ID DESC
  LIMIT 10
) m
ORDER BY m.ID ASC

关于php - 在mysql中显示最近的10行,并带有运行中的余额列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25508090/

10-12 03:26