Hola a todos tengo el siguiente problema, quiero restar el valor de dos registro distinto que tengo en mysql. Le pongo el ejemplo:
Tabla con el contenido Lo que quiero hacer es restar 20 - 10 y guardar ese valor y después restar 30 - 20 y guardar ese valor y así sucesivamente.
Si alguien me pudiera ayudar
UPDATE tabla SET campo3 = campo3 - campo2, campo2 = campo2 - campo1
Estuve viendo tu código y muchas gracias pero lo que pasa es que el nombre de la columna es el mismo siempre y el id me varía de acuerdo si se ha borrado o no el registro.
Ya, me doy cuenta que es una tabla de 2 columnas y lo que quieres es restar valores individuales de las hileras.
Yo creo que para eso vas a necesitar hacer un stored procedure y un loop.
Tienes algún ejemplo que me facilites
DELIMITER //
DROP PROCEDURE `changeVal`
CREATE PROCEDURE `changeVal`()
BEGIN
DECLARE index INT DEFAULT 2;
DECLARE rowCount INT;
DECLARE oldVal INT;
SET count = (SELECT COUNT(*) FROM tabla);
WHILE (rowCount > index) DO
SET oldVal = (SELECT valor FROM tabla WHERE id = rowCount-1);
UPDATE tabla SET valor = valor - oldVal WHERE id = rowCount;
SET rowCount = rowCount -1;
END WHILE
END //
Esto podria funcionar si se preserva el auto_increment. Sino... no se, quizas con limit pero no lo he probado:
DELIMITER //
DROP PROCEDURE `changeVal`
CREATE PROCEDURE `changeVal`()
BEGIN
DECLARE index INT DEFAULT 2;
DECLARE count INT;
DECLARE oldVal INT;
DECLARE myRow INT;
SET count = (SELECT COUNT(*) FROM tabla);
WHILE (count > index) DO
SET oldVal = (SELECT valor FROM tabla LIMIT 1, count-2);
SET myRow = (SELECT id FROM tabla LIMIT 1, count-1);
UPDATE tabla SET valor = valor - oldVal WHERE id = myRow;
SET count = count - 1;
END WHILE
END //