【问题标题】:update and set value with max()+1 problems使用 max()+1 问题更新和设置值
【发布时间】:2017-03-08 20:11:02
【问题描述】:

我正在尝试更新一行并将 shipping_number 设置为 max()+1。原因是该表在另一个名为 id 的列上已经有一个auto_increment。从第一个查询中,我得到max(shipment_number),在下一个查询中,iam 以+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");

【问题讨论】:

  • 在进入查询之前尝试增加。 $var=$max+1; 并分配此变量 $var 以更新查询。也推荐以mysqliphp.net/manual/en/book.mysqli.php开头
  • 为什么不使用 AUTO_INCREMENT
  • 如果已经有 auto_increment 为什么还需要这个?它可以在选择数据时计算,而无需处理2个会话同时运行时出现的问题。

标签: php mysql


【解决方案1】:

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

【讨论】:

  • 没问题的伙伴@SanjuMenon
猜你喜欢
  • 2011-07-18
  • 1970-01-01
  • 2019-04-09
  • 2010-12-07
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多