在MySQL中按行号更新;排行?

时间:2017-04-16 20:28:02

标签: mysql sql

我想更新表格的每一行。

SET DELIMITER ;;
DECLARE i INT DEFAULT 0;
DECLARE n INT DEFAULT 0;
SET i = 0;
SELECT COUNT(*) FROM table1 INTO n;
WHILE i < n DO
    UPDATE table1
        SET col1 = col1 + col2
        WHERE ROW_NUMBER = i;
    SET i = i + 1;
END WHILE;;

ROW_NUMBER以上是我发现的东西。我不知道如何找到元组的行号。

如何使用行号更新WHERE子句?

SET DELIMITER ;;
CREATE TABLE table1 (
    col1 INT,
    col2 INT
);;

INSERT INTO table1 VALUES
    (5, 2),
    (2, 6),
    (3, 7);;

+----+----+
|col1|col2|
+----+----+
|  5 |  2 |
|  2 |  6 |
|  3 |  7 |
+----+----+

预期结果将是:

+----+----+
|col1|col2|
+----+----+
|  7 |  2 |
|  8 |  6 |
| 10 |  7 |
+----+----+

1 个答案:

答案 0 :(得分:2)

如果您想将col1的所有值增加col2,请执行以下操作:

UPDATE table
    SET col1 = col1 + col2;

这就是全部。 SQL是一种基于集合的语言。没有理由为这种类型的操作做一个显式循环。