2017-04-16 79 views
0

我想更新表格的每一行。在MySQL中按行号更新;每行?

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 | 
+----+----+ 
+0

请修改您的查询并显示所需的结果。什么是'ROW_NUMBER'? –

回答

2

如果您想通过col2递增的col1所有值,只是做:

UPDATE table 
    SET col1 = col1 + col2; 

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