【问题标题】:update where select with count mysql用count mysql更新where select
【发布时间】:2012-12-18 03:25:42
【问题描述】:

我有一个名为“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 设置为该值?

【问题讨论】:

    标签: mysql sql join sql-update


    【解决方案1】:

    我认为HAVING 不是必需的,因为它会过滤COUNT 大于零的记录,并且您将使用LEFT JOIn 将其与表PEOPLE 加入。

    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
    

    【讨论】:

    • 谢谢你就是这样......虽然我认为我在第 8 行你的意思是 b.id,而不是 a.id,对吧?
    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2011-10-20
    • 2015-01-28
    相关资源
    最近更新 更多