9

このようなクエリがある場合、同じデータを再度クエリに挿入する必要がないように、更新ステートメントで既に指定した値を参照するにはどうすればよいですか? 例 col1 の値を 'xxx' で更新したいのですが、重複したステートメントで 'xxx' を再度入力する必要があります。重複したステートメントでこれらの値を参照する方法はありますか?

INSERT INTO TABLENAME(col1, col2) 
VALUES (’xxx’, ‘yyy’) 
ON DUPLICATE KEY UPDATE col1 = ‘zzz’
4

2 に答える 2

33

これはうまくいくはずで、もう少しエレガントです:

INSERT INTO TABLENAME(col1, col2) 
VALUES ('xxx', 'yyy') 
ON DUPLICATE KEY UPDATE col1 = VALUES(col1)

行の主キー部分を更新する必要がないことに注意してください。衝突があったので、それは同じであることがわかっています。

于 2010-02-03T16:42:16.867 に答える
3

PHPでは、問題を解決するためにこれを行います:

$fields = "a = 1, b = 2, c = 3";
$sql = "INSERT INTO some_table SET id = $id, $fields ON DUPLICATE KEY UPDATE $fields";
mysql_query($sql);
于 2012-07-31T13:49:34.890 に答える