1

「人」というテーブルがあり、人には「外観」という名前の関連テーブルがあります。MySQL の左結合で選択された「appearance_count」で people テーブルを更新したいと思います。構文に問題があるだけです。次のクエリのどこに update ステートメントを配置しますか。これに似た更新を試みましたが、「選択したテーブルと同じテーブルを更新できません」というエラーが発生し続けました (またはその効果に関する何か)。生の選択フォームでの私のクエリは次のとおりです。

 SELECT        people.*, 
 COUNT(appearances.id) as app_count,
 FROM          `people`
 INNER JOIN    `appearances`
 ON            `appearances`.`person_id` = `people`.`id`
 GROUP BY      `people`.`id`
 HAVING        app_count > 0;

「app_count」を取得して people.appearance_count をその値に設定するにはどうすればよいですか?

4

1 に答える 1

4

がゼロより大きいHAVINGレコードをフィルタリングし、を使用してテーブルと結合しているため、必要ではないと思います。COUNTPEOPLELEFT JOIn

UPDATE  people a
        LEFT JOIN
        (
            SELECT b.id, COUNT(c.person_ID) totalCOunt
            FROM    people b
                    INNER JOIN    appearances c
                        ON c.person_id = b.id
            GROUP BY b.id
        ) d ON a.ID = d.ID
SET     a.appearance_count = d.totalCount
于 2012-12-18T03:28:57.023 に答える