2017-05-07 73 views
1

这是我的查询情况下,当错误

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 

我怎样才能解决这个问题?或者如何以另一种方式做到这一点?

功能仅仅是PHP函数从该

感谢返回日期的问题,心不是

+1

查询以'SELECT'(或者'UPDATE'或'DELETE'或'REPLACE')开头。显示完整的查询或说明您要做什么。 –

回答

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_activelast_time在表中的默认值。
  • 您应该使用数据库时间,而不是用于此目的的应用程序时间(毕竟,不同的客户端可能有不同的时间值)。
  • 您应该将日期/时间值放入单个datetime列中,比如last_active_datetime
1

ip列定义唯一约束,然后将日期(“年月日”)使用ON DUPLICATE KEY UPDATE

insert into `table` (ip) values ("myup") 
on duplicate key update 
`last_active`=".date("Ymd").",`last_time`=".date("His")."