我正在尝试更新一行并使用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'