如果不存在配对,则插入

时间:2019-01-08 12:26:52

标签: mysql sql

如果我的表格有4列:rowId | userOneId | userTwoId | timestamp

是否可以检查一对用户是否存在并更新时间戳?如果不存在,请插入新行吗?

具有预期结果的表示例:

rowId | userOneId | userTwoId |  timestamp
   1        a           b       <timestamp>
   2        a           c       <timestamp>

现在,如果我想插入userOneId auserTwoId b中,它将更新时间戳。如果userOneIdb并且userTwoIdb也可能更新第1行的时间戳(希望看到两个选项,例如精确对和反向对) )

1 个答案:

答案 0 :(得分:2)

这回答了问题的原始版本。

我认为您想要insert . . . on duplicate key update

insert into t(useroneid, usertwoid, timestamp)
    values ($userondid, $usertwoid, $timestamp)
    on duplicate key update timestamp = values(timestamp);

为此,您需要在(useroneid, usertwoid)上使用唯一索引:

create unique index unq_t_useroneid_usertwoid on t(useroneid, usertwoid);