Mysql 我可以通过加入进行更新吗

Mysql Can I make an update with join

我有一个包含多个 table 的数据库,我的所有查询都有效,但我想要一个新的,但无法成功使其正常工作。 我的 'vins' table 中有两个 tables 'vins' 和带有外键 IDproducteur 的“producteurs”。 我需要从 excel 源更新 'vins'table,其中数据并不总是正确写入,并且需要更改 'vins' [= 的某些记录的库存值20=] p.nomproducteur 和 V.annee 和 v.nom 是参数,但为了测试我设置了硬值。 我的查询如下:

UPDATE vins AS v 
JOIN producteurs p  
ON ( p.IDproducteur = v.IDproducteur AND p.nomproducteur LIKE "Charles" )
SET stock = 10
WHERE v.nom LIKE "Symphonie" AND v.annee = 2013 

我有两条记录,生产者是 "Charles",V.nom 是 Symphonie,一条是 annee = 2010,一条是 2013。我在 phpMyadmin 中没有错误,但我的查询没有结果即使通过更改一些命令顺序。 我想要的是不可能的吗?

基于 JOIN 的更新在 mysql 中很常用,因此请确保您的连接和 where 条件与表中的值真正匹配

UPDATE vins AS v 
INNER JOIN producteurs p ON  p.IDproducteur = v.IDproducteur 
SET v.stock = 10
WHERE v.nom =  "Symphonie" 
AND v.annee = 2013 
AND p.nomproducteur = "Charles"

并且你不是过滤部分字符串的事实使用 = 而不是 like

将条件p.nomproducteur LIKE "Charles"放在WHERE子句中:

UPDATE vins v 
JOIN producteurs p ON p.IDproducteur = v.IDproducteur 
SET stock = 10
WHERE 
  v.nom = "Symphonie" AND v.annee = 2013 AND p.nomproducteur = "Charles"

在这种情况下也不需要LIKE,一个简单的=就可以了。