2013-05-21 79 views
0

我对MySQL很新,你们能帮我解决吗?子查询返回多于1行,错误1242

查询:

UPDATE users u, 
     posts p 
SET u.tags = (SELECT group_concat(Tags) 
       FROM (SELECT DISTINCT Tags, 
             user_id 
         FROM posts 
         GROUP BY tags, 
            user_id) AS p 
       GROUP BY user_id) 
WHERE u.user_id = p.user_id; 

错误:

ERROR 1242 (21000): Subquery returns more than 1 row 
+3

它看起来像你的子查询返回多个行,而它只是期待一个。尝试单独运行子查询,查看结果是否符合您的预期。 – Mike

+0

根据user_id返回多个记录的内部查询 –

回答

1

你需要一个相关子查询:

update users u 
    set u.tags =(select group_concat(Distinct Tags) 
       from posts p 
       where p.user_id = u.user_id 
       group by user_id) 

我不知道你的查询正在进行。它在外面加入了一些不必要的东西。它由内部的标签和user_id分组,不必要的distinct关键字。子查询为each user_id生成一个不同的值,所以难怪你得到了返回的行数太多的错误。 A set声明只能有一个值。

+0

非常感谢您节省... –

相关问题