0

我对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
4

1 回答 1

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语句只能有一个值。

于 2013-05-21T18:23:35.300 回答