使用两个ROW值的合并更新mysql列

时间:2019-03-15 06:11:11

标签: mysql

我的数据库中有一个表格user_brand,其中存储着有关用户购买品牌的信息。假设我的表不依赖于另一个表,表看起来像这样:

User_ID  |   Brand      | meta_key
---------+--------------+-------------
1        |   Killer     |  Name
1        |   Lewis      |  Name
1        |   Pepe       |  Name
1        |   Cloth      |  Product
2        |   Samsung    |  Name
2        |   Motorolla  |  Name
2        |   CellPhone  |  Product
3        |   Acer       |  Name
3        |   Laptop     |  Product

现在,我希望更新我的品牌专栏,以使输出如下所示,并且如果复制meta_key对我来说很好,那么我对此不必担心。

User_ID  |  Brand           
---------+-----------------------
1        |  Killer, Lewis, Pepe
2        |  Samasung, Motorolla
3        |  Nisaan

我实现了在选择查询中获得输出,即

SELECT User_ID, GROUP_CONCAT(Brand) 
FROM user_brand 
WHERE meta_key = "Name" 
GROUP BY User_Id

但是尝试了很多方法来更新该特定列,但是失败了。

一些尝试的查询是:

UPDATE user_brand  
SET Brand = (SELECT max 
             FROM 
                 (SELECT GROUP_CONCAT(Brand) AS max 
                  FROM user_brand  
                  WHERE meta_key = "Name" 
                  GROUP BY User_id) AS t)

UPDATE user_brand AS t1 
JOIN 
    (SELECT 
         GROUP_CONCAT(brand) AS max 
     FROM user_brand 
     WHERE meta_key = "Name" 
     GROUP BY User_id) AS t2 
SET t1.Brand = t2.max

任何帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

尝试以下方法-您必须添加ON Clause

UPDATE user_brand  t1 
JOIN 
(SELECT User_id,GROUP_CONCAT(brand) as max FROM user_brand where meta_key = "Name" 
group by User_id 
) AS t2 on t1.user_id=t2.user_id 
SET t1.Brand = t2.max