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 ) 

あなたのクエリが何をしているのかわかりません。外側に不要な継ぎ目があります。distinct不要なキーワードを使用して、タグと内部の user_id でグループ化しています。サブクエリは に対して異なる値を生成しているためeach user_id、返される行が多すぎるというエラーが発生しても不思議ではありません。setステートメントは 1 つの値のみを持つことができます。

于 2013-05-21T18:23:35.300 に答える