MySQL - INSERT ON DUPLICATE KEY - 2列

时间:2012-06-12 22:05:43

标签: mysql

我将记录用户登录的IP地址。为此,我有一个包含3列的简单表:user,ip,time。时间是他们上次使用该地址登录的时间。

当他们登录时,我想在包含他们登录的IP的数据库中插入一行,以及他们登录的时间。

如果已经存在具有相同用户和相同ip的行,我只想更新时间。一个更普遍的问题:

如果两列(或更多)列相同,我如何插入行或更新它?

1 个答案:

答案 0 :(得分:13)

您只需创建复合唯一键user + ip并使用INSERT ON DUPLICATE KEY UPDATE

INSERT INTO tbl (user, ip, `time`) VALUES (1, '1.2.3.4', NOW())
ON DUPLICATE KEY UPDATE `time` = NOW()

要创建索引,请使用类似

的内容
CREATE UNIQUE INDEX tbl_user_ip ON tbl (user, ip)