2017-04-16 8 views
0

テーブルのすべての行を更新したいと思います。MySQLの行番号で更新。 foreach行ですか?

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はセットベースの言語です。このタイプの操作に明示的なループを行う理由はありません。