gpt4 book ai didi

mysql - 如果值存在,更新

转载 作者:行者123 更新时间:2023-11-29 01:22:47 25 4
gpt4 key购买 nike

好的,我有一张表,我将在其中收集用户设备。当用户登录时,我希望它注册设备,如果它已经存在,它只想更新时间戳。这仅在用户登录时发生。

表格如下所示:

device_id => BIGINT AUTOINCREMENT PRIMARY KEY
user_id => BIGINT FOREIGN KEY users(id)
device_name => VARCHAR(40) (Will be like 'Donald ducks iphone')
device_type => VARCHAR(10) (Will be defined by the client, like "IOS")
last_usage => TIMESTAMP (On update, new timestamp and all that)

因此,当用户登录时,我有 user_id、device_name、device_type。

我想要的:如果 id、name 和 type 已经存在于一行中,只需更新时间戳,否则插入值。

因为这与主键无关,所以我不知道该怎么做。当然,我可以先选择这些值,然后返回并进行更新/插入,但这感觉不对:)

最佳答案

首先,使device_namedevice_type 唯一。

现在您有几个选择。您可以使用:

INSERT IGNORE INTO devices (...) VALUES(...)

或者如果您担心重要的错误可能会被忽略,请使用:

INSERT INTO devices (...) VALUES(...)
ON DUPLICATE KEY UPDATE device_id = device_id

请注意,这与 REPLACE 不同,因为这根本不会影响旧记录,而 REPLACE 将创建新的 ID 和时间戳。

编辑:由于您现在想要更新时间戳,请使用:

INSERT INTO devices (...) VALUES(...)
ON DUPLICATE KEY UPDATE last_usage = NOW()

关于mysql - 如果值存在,更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com