2014-02-05 130 views
0

用簡單的英語,我試圖從db1獲得平均投票數,其中投票是節點類型「文章」,然後將每篇文章的投票平均值插入到「贊」字段中db2.news中的相應行。MySQL組和插入問題

這裏是我的凸輪了:

INSERT IGNORE INTO db2.news 
(likes) 
SELECT ROUND(AVG(v.value)/10) 
FROM db1.votes v, db1.node n, db2.news d 
WHERE v.id=n.nid AND n.type='article' AND d.id=n.nid 
GROUP BY v.id; 

查詢無差錯運行,但它會在DB2垃圾行的負荷只有像場被填滿。

我很困擾這個小時,所以感謝您的提示,以解決查詢。

回答

1

您的查詢是一個插入,它插入內部查詢的結果集。但是這個結果集只包含一列和很多行。類似

東西可以幫助例如:

create table votetmp 
SELECT v.id, ROUND(AVG(v.value)/10) voteavg 
FROM db1.votes v, db1.node n, db2.news d 
WHERE v.id=n.nid AND n.type='article' 
GROUP BY v.id; 

update 
    db2.news 
set 
    likes=(select voteavg from votetmp where votetmp.id=news.id) 
+0

你的暗示,讓我看到了光明!第2行中的'valueavg'和第4行中的'AND d.id = n.nid'是多餘的。請更新ansewr,我會接受它。非常感謝。 – qliq