我正在尝试使用if更新如下所示 你会明白我想做什么
UPDATE messages SET IF(u1= :username,u1_delete=1,u2_delete=1)
WHERE thread_id= :thread_id
我希望在u1是用户名时更新u1_delete,否则它会更新u2_delete字段
答案 0 :(得分:1)
在更新中使用CASE
。诀窍是在u1_delete
时更新:username = u1
,然后将其设置为当前值,使其不会变为NULL
,如果{{1} u2_delete
则执行相同操作}},它涵盖了:username <> u1
的“其他”情况。
IF()
答案 1 :(得分:1)
您可以使用case语句,如下所示:
UPDATE messages
SET
u1_delete = CASE WHEN u1= :username THEN 1 ELSE u1_delete END,
u2_delete = CASE WHEN u1= :username THEN u2_delete ELSE 1 END,
WHERE
thread_id= :thread_id
答案 2 :(得分:0)
我认为这就是你想要的:
UPDATE messages
SET
u1_delete = IF(u1 = :username, 1, u1_delete),
u2_delete = IF(u1 <> :username, 1, u2_delete)
WHERE thread_id= :thread_id;
所以基本上,如果u1 = username,则设置为u1_deleted = 1,否则u1_deleted设置为自身且不会更改。 如果u1不等于用户名,则u2_delete = 1,否则u2_delete将设置为自身且不会更改。
这是你想要的吗?