1

我有一个名为“people”的表,而 people 有一个名为“appearances”的关联表。我想用 MySQL 中的左连接选择的 'appearance_count' 更新 people 表。我只是在语法上遇到了一些麻烦。我会将更新语句放在以下查询中的什么位置。我尝试了与此类似的更新,但我不断收到错误“无法更新与选定表相同的表”(或类似的东西)。这是我的原始选择形式的查询:

 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没有必要,因为它会过滤 aCOUNT大于零的记录,并且您将PEOPLE使用LEFT 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 回答