【问题标题】:Subquery returns more than 1 row, Error 1242子查询返回超过 1 行,错误 1242
【发布时间】:2013-05-21 18:18:00
【问题描述】:

我是 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

【问题讨论】:

  • 看起来您的子查询返回不止一行,而它只返回一行。尝试单独运行子查询,看看结果是否符合您的预期。
  • 内部查询根据user_id返回多条记录

标签: mysql sql


【解决方案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 语句只能有一个值。

【讨论】:

    猜你喜欢
    • 2011-12-13
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    相关资源
    最近更新 更多