来自Query的MySQL更新行

时间:2015-01-28 14:27:19

标签: mysql group-concat

我有一个复杂的(For me!)查询,基本上是从2个表中获取数据,然后将它们分组为togeher(这个位作为SELECT查询100%工作)

但是当我现在需要在另一个表中更新数据库时,它就无法工作了。

我有这个:

UPDATE 
    exp_channel_data data,
    (
        SELECT 
            posts.cat_id, 
            posts.entry_id, 
            cats.cat_name, 
            cats.cat_id,
            GROUP_CONCAT('{"',cats.cat_name, '"}:{"',cats.cat_name,'"}') as category_tag
        FROM 
            exp_category_posts posts, 
            exp_categories cats
        WHERE 
            cats.cat_id = posts.cat_id
        GROUP BY 
            posts.entry_id
    ) category
SET
    data.field_id_178 = category.category_tag
WHERE 
     data.entry_id = category.entry_id;

但是我收到了这个错误:

  

重复列名称' cat_id'

我认为这是因为我试图在两个表之间建立连接,但它没有链接。

就像我说的那样,SELECT查询可以自己运行,但是当放入UPDATE时 - 它只会抛出此错误。

:(

1 个答案:

答案 0 :(得分:2)

你非常接近你需要的东西:

UPDATE exp_channel_data data JOIN
       (SELECT posts.entry_id,
               GROUP_CONCAT('{"',cats.cat_name, '"}:{"',cats.cat_name,'"}') as category_tag
        FROM exp_category_posts posts JOIN
             exp_categories cats
             ON cats.cat_id = posts.cat_id
        GROUP BY posts.entry_id
       ) category
       ON data.entry_id = category.entry_id
    SET data.field_id_178 = category.category_tag;

重要的部分是从子查询中删除cats.cat_id。你有两个具有该名称的列,令MySQL感到困惑。

我还修复了查询以使用正确的JOIN语法。