子查询返回多于1行,错误1242

时间:2013-05-21 18:18:00

标签: mysql sql

我对MySQL很陌生,你能帮助我吗?

查询:

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

1 个答案:

答案 0 :(得分: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生成了不同的值,因此难怪您收到的返回行数过多。 set语句只能有一个值。

相关问题