Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我在 C# 中有以下 SQL 查询
REPLACE INTO users(uid, username, firstseen, ...) VALUES(@uid, @username, @firstseen, ...)
我希望更新用户记录,但除了第一次看到该用户外,我不想更改 firstseen。我可以查询数据库,但这会增加很多开销,有更好的方法吗?
REPLACE INTO将踩踏任何已经存在的数据,相当于 aDELETE后跟一个INSERT语句。
REPLACE INTO
DELETE
INSERT
你可能想要的是:
INSERT IGNORE INTO users (uid, username, screenname, ...) VALUES (@...) ON DUPLICATE KEY UPDATE uid=VALUES(uid), username=VALUES(username), ...
您可以根据需要在该部分中分配特定字段ON DUPLICATE KEY,省略那些明显相同的字段。
ON DUPLICATE KEY