mysql - 如何根据 WHERE 和 AND 更新 2 个不同的行

标签 mysql sql

我想更新一个表,并且取决于位置和 AND 取决于我要更新的行,所以如果 message_tomessage_id 匹配更新 message_deleted_to 或如果 message_usermessage_id 匹配它们更新 messaged_deleted_from

我的 table :

CREATE TABLE IF NOT EXISTS `messages` (
  `message_id` int(11) NOT NULL,
  `message_user` int(11) NOT NULL,
  `message_subject` varchar(100) NOT NULL,
  `message_body` text NOT NULL,
  `message_to` int(11) NOT NULL,
  `message_from_read` int(1) NOT NULL DEFAULT '1',
  `message_to_read` int(11) NOT NULL DEFAULT '0',
  `message_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `message_deleted_from` int(11) NOT NULL DEFAULT '0',
  `message_deleted_to` int(11) NOT NULL,
  `message_permdeleted` int(11) NOT NULL DEFAULT '0',
  `message_type` varchar(11) NOT NULL,
  `message_deleted` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `messages`
--

INSERT INTO `messages` (`message_id`, `message_user`, `message_subject`, `message_body`, `message_to`, `message_from_read`, `message_to_read`, `message_date`, `message_deleted_from`, `message_deleted_to`, `message_permdeleted`, `message_type`, `message_deleted`) VALUES
(6, 12, 'lol', 'lol', 1, 1, 0, '2015-12-14 04:54:32', 0, 0, 0, 'sent', 0),

我想完成的事情(我知道这段代码行不通,我只是想告诉你我想做什么)

UPDATE messages 
    SET message_deleted_from = 1 
    WHERE message_user = ? 
    AND message_id = ?

    OR SET messages_delete_to = 1
    WHERE message_to
    AND message_id = ?

最佳答案

你可以试试这个:

UPDATE messages 
    SET message_deleted_from =  
    CASE WHEN message_user = ? 
    AND message_id = ? THEN 1 ELSE message_deleted_from END,

    messages_delete_to = 
    CASE WHEN message_to=? 
    AND message_id = ? THEN 1 ELSE messages_delete_to END

关于mysql - 如何根据 WHERE 和 AND 更新 2 个不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34951482/

相关文章:

mysql - 在 SQL 条件下检查两个日期是否在同一会计年度?

mysql - 选择前 N 行并处理并列情况

sql - 启动 MySQL 例程和脚本

mysql - 为什么这个查询失败了?

c# - 如何在 C# 中保存此表?

使用多个查询发送邮件的 PHP (PDO) 文件

php - Mysql Error updating record syntax to use near 't suit to the product which is described above' )' 在第 1 行

php - 使用 PHP 存储在 ASTERISK 数据库中的规则的正则表达式

mysql选择具有时间间隔的记录数

MySql 按月添加日期范围