使用正在运行的余额列显示mysql中的最后10行

时间:2014-08-26 14:17:35

标签: php mysql sql

我以前为银行帐户表的运行余额计算的代码运行正常。我按预期得到了运行平衡。

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,然后再按升序排序将不起作用,因为作为计算列的“平衡”列将受到影响。

有没有办法显示最后10行而不影响Balance列中的计算?

2 个答案:

答案 0 :(得分:1)

如何将现有查询用作子查询,以按降序排序前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

答案 1 :(得分:0)

而不是:

ORDER BY `balance1`.`ID` ASC

使用

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