显示mysql中最近的10行,其中包含一个正在运行的balance列


Display last 10 rows in mysql with a running balance column

下面我用来计算银行帐户表的运行余额的代码工作得很好。如我所料,我得到了运行平衡。

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

而不是:

ORDER BY `balance1`.`ID` ASC
使用

ORDER BY `balance1`.`ID` DESC LIMIT 10