2013-03-19 81 views
3

我在C#下面的SQL查询在MySQL表更新一个字段,如果它是空的

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

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

+0

我们需要看到更多的上下文。你的代码还有什么功能?你如何定义你第一次“看到”用户? – Melanie 2013-03-19 21:10:20

+0

您还需要什么样的环境?这个问题非常清楚。 – Andomar 2013-03-19 21:10:43

+0

@Jamie ......你能否更具体的要求“除了第一次看到这个用户之外,我不想改变第一次见面”我并不真正理解这意味着什么。 – MikeTWebb 2013-03-19 21:11:14

回答

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节指派特定的领域需要,忽略那些显然是相同的。

+1

+1在'insert'中包含'firstseen',并将其排除在'on duplicate key'上,这可能是在MySQL中编写这个代码的最简单方法:) – Andomar 2013-03-19 21:12:21

相关问题