2017-09-27 91 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」 –