用简单的英语,我试图从db1获得平均投票,其中投票是节点类型'article',然后将每篇文章的平均投票插入db2中相应行的'likes'字段。新闻。
以下是我的观点:
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中创建大量垃圾行,其中只填充字段。
我正在努力解决这个问题几个小时,所以感谢您提示修复查询。
答案 0 :(得分: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)