MySQL组和插入问题

时间:2014-02-05 21:03:36

标签: sql group-by left-join

用简单的英语,我试图从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中创建大量垃圾行,其中只填充字段。

我正在努力解决这个问题几个小时,所以感谢您提示修复查询。

1 个答案:

答案 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)