1

我很难理解 MySQL 中的 if/else。我有一个简单的消息传递数据库,我想在其中删除消息(行),但前提是两个用户都将其删除。

所以数据库看起来像这样:

----|---------|-------------|------------
mid | message | user1delete | user2delete
----|---------|-------------|------------
 1  |   hi!   |     no      |    yes
----|---------|-------------|------------

所以我想看看“mid” 1,如果其他用户已经删除(隐藏)了该消息,则删除该行。否则,只需在正确的用户处更新“是”即可。是否可以在一个 MySQL 查询中执行此操作,或者我必须对多个查询使用 PHP if/else 语句?

看起来像谎言的东西:

SELECT * FROM MESSAGES
    IF user1delete = NULL or "no"
        THEN UPDATE user2delete = "yes"
    ELSE IF user1delete = "yes" AND user2delete = "yes"
        THEN DELETE where mid = 1

谢谢!(我希望我的问题很清楚......)

编辑:我的意思是“更新”是的......

4

2 回答 2

0

不能在单个查询中删除行或更新同一行。如果您非常想在一个数据库调用中执行此操作,您可以编写一个存储过程。但请记住,即使您使用从 PHP 对 SP 的单个数据库调用来执行此操作,您仍然会运行多个查询。

最佳解决方案:从字面上删除数据从来都不是一件好事。为已删除的消息创建另一列,如果两个用户都删除它,则将其标记为已删除。这将允许您保留历史数据 + 您可以在一个更新语句中进行查询。

于 2013-05-15T14:05:38.067 回答
0
DELETE FROM messages WHERE user1delete="yes" and user2delete="yes";

这就是你所追求的吗?

mid=1编辑:显然只为该消息添加到 WHERE 语句中

于 2013-05-15T13:58:34.403 回答