2017-09-27 189 views
0

我有这个查询,我的目的是更新产品表更精确的“模型”字段,使用来自Model表的数据,这里的条件是获取模型名称,看看什么该ID是从模型表格和品牌名称从产品表从其他表更新表字段conditionaly

UPDATE products 
SET products.model = (SELECT Model.id FROM Model, Brand 
         WHERE Brand.id = Model.id_brand 
          AND Brand.title = 'ALCATEL' 
          AND Model.title = products.model) 
WHERE products.brand = 'ALCATEL' 
+0

而问题是什么?.. – sagi

+0

对不起@sagi“指出更新” –

回答

0
update products set products.model = (select Model.id from Model, Brand where Brand.id = Model.id_brand and Brand.title = 'ALCATEL' and Model.title = products.model) where products.brand = 'ALCATEL' 

在这里,你的子查询,您可以返回只有一列,它的强制性,只返回一个值,因此需要使用限制1.以下是修改的子查询。

select Model.id from Model INNER JOIN Brand ON Brand.id = Model.id_brand where Brand.title = 'ALCATEL' and Model.title = products.model LIMIT 1 
+0

它,因为它的表的法定的继承权,我从一个表和模型表格获得品牌称号有品牌标识和模型名称和模型ID,但子查询在where子句中有products.model,而“products.model”来自子查询外部,即使有可能,也不能超过 –

+0

更新后可以知道错误描述子查询,如上所述? – Jack

+0

运行查询作为选择你的子查询给我“NULL” –