用max()+1个问题更新和设置值


update and set value with max()+1 problems

我正在尝试更新一行并使用max()+1设置shipment_number。这样做的原因是该表在另一个名为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");

如果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'