2012-03-07 84 views
1

我有兩個表,分別爲user_showscomments。他們都有一個共同的祕鑰,如id從其他表上的計算中添加一列mysql列

我想在user_shows中有一列,當user_shows.id = comments.id時,將在評論表中存儲評論的數量。我試了一下,並想出了類似的東西:

ALTER TABLE user_shows 
ADD num_comments INT(4) AS (SELECT id 
           FROM comments, 
            user_shows 
          WHERE comments.id = user_shows.id) 

......但這並沒有奏效。

+0

添加一列,並填充它是單獨的東西 - 這意味着單獨的查詢 – 2012-03-07 05:40:16

+0

感謝清楚我的查詢OMG Ponies,我只是認爲必須有兩個同時做的事情:-P – 2012-03-07 06:44:10

回答

4

你必須寫兩個單獨的查詢是這樣的: -

ALTER TABLE user_shows 
ADD num_comments INT(4); 

UPDATE user_shows SET num_comments = (SELECT count(id) FROM comments WHERE comments.id = user_shows.id); 
1

我對你的建議是爲了這個目的創建的view

類似下面:

create view user_shows_comments as (

    SELECT u.*,count(c.id) as num_comments 
    FROM user_shows as u left join comments as c on u.id=c.user_id 
    group by c.user_id 
) 

使用這一觀點作進一步查詢。它會自動更新表格。