这是我的查询
CASE
WHEN (SELECT COUNT(*) FROM `table` WHERE `ip`= 'myip' )=1
THEN UPDATE `table`
SET `last_active`=".date("Ymd").",`last_time`=".date("His")."
WHERE `ip`= 'myip';
ELSE (INSERT INTO `table`(ip)
VALUES("myip"));
END
但它没有问题。问题应该来自这里
(SELECT COUNT(*) FROM `table` WHERE `ip`= 'myip' )=1
我该如何解决这个问题?或者如何以另一种方式做到这一点?
日期(" Ymd")函数只是用于返回问题日期的PHP函数
感谢
答案 0 :(得分:1)
在ip
列上定义唯一约束,然后使用ON DUPLICATE KEY UPDATE
:
insert into `table` (ip) values ("myup")
on duplicate key update
`last_active`=".date("Ymd").",`last_time`=".date("His")."
答案 1 :(得分:1)
我认为你正在尝试这样做:
create unique index unq_table_ip on table(ip);
insert into table (ip)
values ('myip')
on duplicate key update last_active = curdate(),
last_time = curtime();
唯一索引(或等效的唯一约束)保证给定的ip
仅在表中出现一次。让数据库为您完成这项工作 - 这称为维护关系完整性。
注意:
last_active
和last_time
在表格中有默认值。datetime
列,例如last_active_datetime
。