Mysql 如何根据位置和更新2个不同的行

Mysql 如何根据位置和更新2个不同的行,mysql,sql,Mysql,Sql,我想更新一个表,这取决于我想更新的行的位置和依赖关系,因此如果message\u-to和message\u-id将updatemessage\u-deleted\u-to匹配,或者如果message\u-user,message\u-id匹配,则更新messaged\u-deleted\u-from 我的桌子: CREATE TABLE IF NOT EXISTS `messages` ( `message_id` int(11) NOT NULL, `message_user` int

我想更新一个表,这取决于我想更新的行的位置和依赖关系,因此如果
message\u-to
message\u-id
将update
message\u-deleted\u-to
匹配,或者如果
message\u-user
message\u-id
匹配,则更新
messaged\u-deleted\u-from

我的桌子:

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 =  
    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

你的代码并不遥远

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

UPDATE messages
SET message_deleted_to = 1
WHERE (message_to = ? AND message_id = ?)
警告:PDOStatement::execute():SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解当查询中第11行的messages\u delete\u to='3'不正确时,在“SET messages\u delete\u to=CASE”附近使用的正确语法:(如果message_to和message_id匹配update message_deleted_to,或者如果message_user、message_id匹配,则更新messaged_deleted_from)
UPDATE messages
SET message_deleted_from = 1
WHERE (message_user = ? AND message_id = ?) 

UPDATE messages
SET message_deleted_to = 1
WHERE (message_to = ? AND message_id = ?)