使用max()+ 1问题更新并设置值

时间:2016-10-26 12:43:45

标签: php mysql

我正在尝试更新一行并将ship_number设置为max()+1。原因是该表已经在名为id的另一列上有auto_increment。从第一个查询中我得到max(shipment_number),并在下一个查询中以+1递增。但是我得到了一个错误..

  

#1093 - 您无法在FROM子句中为更新指定目标表'commercial_sales_custpo_process'

任何人都可以帮我解决这个问题。

$max = "SELECT MAX(shipment_number) FROM commercial_sales_custpo_process WHERE 
tender_id='$tender_id' AND id='$id'";

$query1="UPDATE commercial_sales_custpo_process set shipment_number = ($max+1) WHERE 
tender_id='$tender_id' AND id='$id'";
mysql_query($query1) or die ("Error in query: $query1");

1 个答案:

答案 0 :(得分:2)

如果Auto_Increment不可用,只需使用UPDATE..JOIN

UPDATE commercial_sales_custpo_process t
CROSS JOIN (SELECT MAX(shimpent_number) + 1 as max_ship 
            FROM commercial_sales_custpo_process) s
 SET t.shipment_number = s.max_ship
WHERE t.tender_id='$tender_id' AND t.id='$id'