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