我可以在mysql中使用REPLACE和WHERE子句吗?

时间:2010-07-04 08:13:29

标签: mysql

类似的东西:

REPLACE INTO vips SET active = 0, inactive = 0 WHERE ip = 3494220867 AND proto = "https";

1 个答案:

答案 0 :(得分:2)

是的,它的工作原理与标准insert完全相同,因为它毕竟是delete/insert等效的。

有关详细信息,请参阅here


根据您添加的评论:

  

在我问这个问题之后,我发现我可能正在寻找能够提供与替换相同功能的东西但是在更新中。如果记录存在(如果ip和proto存在),我正在尝试更新活动和非活动列。如果ip和proto列与行不匹配,则会插入它。我在原帖中提供的查询不起作用。

我认为你正在寻找INSERT ... ON DUPLICATE KEY UPDATE命令。

如果该行已存在,这将尝试insert数据并执行update位。

现在我不确定这种情况有多好,除非ip / proto是主键。您可能需要恢复到标准方法:

begin transaction.
try:
    insert data into table with default values.
catch exception violates_unique_constraint:
    do nothing.
update data in table with new values.
end transaction