我将记录用户登录的IP地址。为此,我有一个包含3列的简单表:user,ip,time。时间是他们上次使用该地址登录的时间。
当他们登录时,我想在包含他们登录的IP的数据库中插入一行,以及他们登录的时间。
如果已经存在具有相同用户和相同ip的行,我只想更新时间。一个更普遍的问题:
如果两列(或更多)列相同,我如何插入行或更新它?
答案 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)