使用LEFT JOIN在MYSql更新中添加多值列

时间:2013-01-11 15:02:55

标签: mysql concatenation

我现在已经处理了几个小时。我有这个问题:

update xcart.xcart_products_lng_en
left join xcart.xcart_products 
    on xcart.xcart_products.productid = xcart.xcart_products_lng_en.productid
left join xcart.xcart_extra_field_values
    on xcart.xcart_extra_field_values.productid = xcart.xcart_products.productid
set `keywords` =  CONCAT(product, " ", productcode, " ",value) 
where value is not null;`

起初这是我所期望的,但是客户端设置数据库的方式,它有一些我似乎无法弄清楚的问题。

事实证明,拉动VALUE的表是动态生成的,最终看起来像这样。

产品1 |字段ID 1 |产品ISBN
产品1 |字段ID 3 |作者姓名
产品1 |字段ID 2 |货架ID

问题在于,当我创建的查询运行时,它只添加一个字段ID的值,并且进入其他字段ID,无论如何要进行此操作吗?我知道“CONCAT”,我不知道如何利用它,或者在这种情况下使用它是否有意义。

~Traci Wojcik

1 个答案:

答案 0 :(得分:1)

您的联接派生了一张桌子。您需要更新现有表。如果你有T1,T2,T3作为表,并且你想根据T1,T2,T3更新T1,那么你写:

update T1
set T1.Field = (select ... from ... where ...)

我希望这会有所帮助。