2012-06-07 43 views
1

我有2个表xcart_products,其中有productid , meta_description和许多其他字段。所述第二表是已经(productid fieldid and value来自不同表的SQL更新表值

我需要的fieldID = 1xcart_extra_field_values

值复制到

xcart_products表所在的Productid是相同的meta_description柱xcart_extra_field_values。

UPDATE `xcart_products` SET meta_description = (SELECT value FROM 
     xcart_extra_field_values WHERE fieldid = 1 AND 
     xcart_extra_field_values.productid = xcart_products.productid) 
WHERE 
    xcart_extra_field_values.productid = xcart_products.productid ; 

上面我写的SQL,但我得到一个错误

#1054 - Unknown column 'xcart_extra_field_values.productid' in 'where clause' 
+0

你有使用连接而不是内部选择语句 – Aboodred1

回答

1

我希望这会为你工作:

UPDATE `xcart_products`, `xcart_extra_field_values` SET xcart_products.meta_description = xcart_extra_field_values.value 
WHERE 
xcart_extra_field_values.fieldid = 1 
AND 
xcart_products.productid = xcart_extra_field_values.productid 
1

你需要第二个表的名称查询,因为它是在查询中使用,即使您不改变其中的任何数据。

UPDATE xcart_products,xcart_extra_field_values

1

您可以使用多台UPDATE语法来联接表来代替:

UPDATE xcart_products JOIN xcart_extra_field_values USING (productid) 
SET xcart_products.meta_description = xcart_extra_field_values.value 
WHERE xcart_extra_field_values.fieldid = 1;