Respuesta corta, sí la respuesta
más largas, puede utilizar una variable para anotar que como itera por las filas, es decir
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
El , (SELECT @Balance := 0) AS variableInit
asegura que @Balance se inicializa a 0 antes tu comienzas Para cada fila, establece @Balance como @Balance + In - Out
, y luego emite el valor calculado.
También vale la pena asegurarse de que la ORDEN sea coherente, de lo contrario el Saldo variará según el orden en que se devuelvan las filas. Si quería entonces pedirlo de nuevo a frente, por ejemplo, podría utilizar esto como una subconsulta como entonces las ofertas de consulta externa con los valores calculados garantizando así el equilibrio que queda es decir correcta
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
cómo con paginación, creo que esta consulta no funciona bien, el equilibrio no va bien –
@PutraLZendrato Me temo que no entiendo la pregunta –
Hola Simon, quiero decir, cómo si los datos la fila es grande. Ejemplo, tenemos 100 datos, pero no cargaremos en una página. Entonces, nos separamos en 2 páginas (trabajo de paginación). Creo que el equilibrio no funcionará. –