2014-12-03 140 views
0

现在,我试图从表中列的最高值然后增加它(+1),然后更新另一个记录相同的列到该数字。 我在PHP脚本中,变量$ SQL被发送到MySQL。MySQL更新表与选择数据

$SQL=" 
     UPDATE `router` 
     SET `Line Order`= (SELECT 1 + IFNULL(MAX(`Line Order`), 0) FROM `router`) 
     WHERE `RN`=? 
    "; 
    $stmt = $GLOBALS['mySQLConnection']->prepare($SQL); 
    echo $GLOBALS['mySQLConnection']->error; 

的错误是:你不能指定目标表“路由器”的更新在FROM子句 我们怎样想做到这一点,没有PHP编写单独的查询

回答

1

尝试此查询:

UPDATE router AS r1 
INNER JOIN (
    SELECT 1 + IFNULL(MAX(`Line Order`), 0) AS new FROM `router`) AS r2 
SET `Line Order` = r2.new 
WHERE `RN` = ? 
+0

我将不得不研究这个。但我复制并粘贴,它的工作! – serv92 2014-12-03 19:04:59