2015-01-15 52 views
-1

我想插入一个值到表中。然而,这个价值也来自该表。我想检查该表上是否有重复键。由于该值也来自该表,所以查询说列名是不明确的。需要类似插入表中的别名

$result2 = "INSERT INTO estock_saldo 
       (items, customer_id, quantity , reference_no, size)     
      SELECT 
       items, '".$member_id."', '".$quantity[$i]."', reference_no, size        
      FROM  
       estock_saldo 
      WHERE id in ({$order_id[$i]}) 
      ON DUPLICATE KEY 
      UPDATE estock_saldo.quantity = estock_saldo.quantity - '".$quantity[$i]."'"; 

      $res2 = $mysqli->query($result2); 
      if(!$res2){ printf("Errormessage 2: %s\n", $mysqli->error); die(); } 

含糊不清来自estock_saldo.quantity。我曾尝试别名列名。然而,你不能在插入表中做到这一点。

回答

1

问题仍然存在于下面显示的代码片段中。您不能在INSERT语句中使用列别名。

INSERT INTO estock_saldo 
       (items, customer_id, quantity AS asquan 
             <-- HERE 

由于您再次插入相同的记录,您正在尝试的内容总是会有重复的项目。而不是INSERT声明,你实际上打算做一个UPDATE

UPDATE estock_saldo SET 
quantity = quantity - '".$quantity[$i]."'" 
WHERE id in ({$order_id[$i]}); 
+0

这就是模糊的开始。我正尝试别名列名。 – alisa 2015-01-15 17:15:13

+0

不,你不能;你应该提供确切的列名称。请参阅MySQL文档以获取更多信息。 – Rahul 2015-01-15 17:16:26

+0

这就是为什么我需要别名旁边的解决方案。你能弄明白吗? – alisa 2015-01-15 17:17:18