2017-04-16 97 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是一種基於集合的語言。沒有理由對這種類型的操作進行顯式循環。