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