Mysql 如果配对不匹配,则插入';不存在

Mysql 如果配对不匹配,则插入';不存在,mysql,sql,Mysql,Sql,如果我的表有4列:rowId | userOneId | userTwoId | timestamp 是否可以检查一对用户是否存在,如果存在,是否可以更新时间戳?如果不存在,请插入新行 具有预期结果的表格示例: rowId | userOneId | userTwoId | timestamp 1 a b <timestamp> 2 a c <timestamp>

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

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

具有预期结果的表格示例:

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

现在,如果我想插入到
userOneId
a
userTwoId
b
,它将更新时间戳。如果
userOneId
b
userTwoId
b
也更新第1行时间戳(希望看到两个选项,即精确对和反向对)

这回答了问题的原始版本

我想你需要
插入。在重复密钥更新时

insert into t(useroneid, usertwoid, timestamp)
    values ($userondid, $usertwoid, $timestamp)
    on duplicate key update timestamp = values(timestamp);
为了使其工作,您需要在
(useroneid,usertwoid)
上有一个唯一的索引:


如果row1 useroneid=1/usertwoid=2和row2 useroneid=2/usertwoid=1,它会算作一对吗?我看不出有任何理由不这样做……您只是在检查一些数据,然后运行另一个查询。到目前为止你试过什么?你面对的是什么问题?谢谢,这样做了,如果我还想考虑“反向”的夫妻,那该怎么办?正如P.Salmon所建议的
create unique index unq_t_useroneid_usertwoid on t(useroneid, usertwoid);