2014-12-03 109 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