3
我在C#下面的SQL查询在MySQL表更新一个字段,如果它是空的
REPLACE INTO users(uid, username, firstseen, ...)
VALUES(@uid, @username, @firstseen, ...)
我希望更新的用户记录,但我不想firstseen除了第一时间改变我看到这个用户。我可以查询数据库,但这会增加很多开销,有没有更好的方法呢?
我在C#下面的SQL查询在MySQL表更新一个字段,如果它是空的
REPLACE INTO users(uid, username, firstseen, ...)
VALUES(@uid, @username, @firstseen, ...)
我希望更新的用户记录,但我不想firstseen除了第一时间改变我看到这个用户。我可以查询数据库,但这会增加很多开销,有没有更好的方法呢?
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
节指派特定的领域需要,忽略那些显然是相同的。
+1在'insert'中包含'firstseen',并将其排除在'on duplicate key'上,这可能是在MySQL中编写这个代码的最简单方法:) – Andomar 2013-03-19 21:12:21
我们需要看到更多的上下文。你的代码还有什么功能?你如何定义你第一次“看到”用户? – Melanie 2013-03-19 21:10:20
您还需要什么样的环境?这个问题非常清楚。 – Andomar 2013-03-19 21:10:43
@Jamie ......你能否更具体的要求“除了第一次看到这个用户之外,我不想改变第一次见面”我并不真正理解这意味着什么。 – MikeTWebb 2013-03-19 21:11:14