2

次のUPDATEステートメントでエラーが発生する理由はありますか

UPDATE `t1`
INNER JOIN `t2` ON `t2`.`id`=`t1`.`t2_id`
INNER JOIN `t3` ON `t2`.`t3_id` = `t3`.`id` AND `t3`.`a_id` = '123'
WHERE `t2`.`date` > '2012-08-14'
    AND `t2`.`status` = 'pending'
SET `t1`.`active` = '0';

私が得るエラーは次のとおりです。

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `t2`.`date` > '2012-08-14' AND `t2`.`statu' at line 4

次の(関連する)SELECTステートメントは正常に機能します

SELECT `t1`.*
FROM `t1`
INNER JOIN `t2` ON `t2`.`id`=`t1`.`t2_id`
INNER JOIN `carer` ON `t2`.`t3_id` = `t3`.`id` AND `t3`.`a_id` = '123'
WHERE `t2`.`date` > '2012-08-14'
    AND `t2`.`status` = 'pending'
4

2 に答える 2

7

MySQLのUPDATE構文は次のとおりです。

UPDATE [LOW_PRIORITY] [IGNORE] table_references  
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...  
    [WHERE where_condition]  

これを使って:

UPDATE `t1`
INNER JOIN `t2` ON `t2`.`id`=`t1`.`t2_id`
INNER JOIN `t3` ON `t2`.`t3_id` = `t3`.`id` AND `t3`.`a_id` = '123'

SET `t1`.`active` = '0'

WHERE `t2`.`date` > '2012-08-14'
    AND `t2`.`status` = 'pending' ;
于 2012-08-15T11:47:10.583 に答える
0

これを行うには、次の構文を使用します。

UPDATE r
INNER JOIN ENGING_DERIVE r
FROM ENGING_DERIVE
SET r.TUNING_PERFORM = r.BORE * r.STROKE
WHERE t.ID = t.ID;
于 2017-02-05T19:00:54.090 に答える