我正在尝试更新一行并将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");
答案 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'