2012-12-18 75 views
1

我有一個名爲'人'的表,人們有一個名爲'出現'的關聯表。我想通過在MySQL中使用左連接選擇的'appearance_count'來更新人員表。我只是在語法上遇到了一些麻煩。我將在哪裏將我的更新語句放在下面的查詢中。我嘗試了類似這樣的更新,但我一直收到一個錯誤'無法更新與選定表格相同的表格'(或者是那種效果)。這是我在它的原料選擇表單查詢:更新在哪裏選擇計數mysql

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

我覺得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 
+1

謝謝你,這是它......雖然我認爲我在第8行你的意思是b.id,而不是a.id,對不對? – jdkealy

+0

是的,抱歉的錯字。 –