我在C#中有以下SQL查询
REPLACE INTO users(uid, username, firstseen, ...)
VALUES(@uid, @username, @firstseen, ...)
我希望更新用户记录,但除了第一次看到此用户之外,我不想先改变。我可以查询数据库,但这会增加很多开销是否有更好的方法呢?
答案 0 :(得分:3)
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
部分中指定特定字段,省略明显相同的字段。