3

我在 C# 中有以下 SQL 查询

REPLACE INTO users(uid, username, firstseen, ...)
VALUES(@uid, @username, @firstseen, ...)

我希望更新用户记录,但除了第一次看到该用户外,我不想更改 firstseen。我可以查询数据库,但这会增加很多开销,有更好的方法吗?

4

1 回答 1

3

REPLACE INTO将踩踏任何已经存在的数据,相当于 aDELETE后跟一个INSERT语句。

你可能想要的是:

INSERT IGNORE INTO users (uid, username, screenname, ...)
  VALUES (@...)
  ON DUPLICATE KEY UPDATE uid=VALUES(uid), username=VALUES(username), ...

您可以根据需要在该部分中分配特定字段ON DUPLICATE KEY,省略那些明显相同的字段。

于 2013-03-19T21:11:01.057 回答