繁体   English   中英

如何使用查询结果更新空表

[英]how to Update an empty table with the result of a query

我有一个表名平均评分。 我想用这个查询的结果更新我的表名最终评级

select spid,AVG(avgRat) from AvgRating group by spid

我怎样才能做到这一点?

看看附上的图片

INSERT IGNORE INTO FinalRating (select spid,AVG(avgRat) from AvgRating group by spid)

如果你想避免重复,只需确保 spid 在另一个表上是唯一的应该可以工作

如果你想更新,你必须按照这些方式加入一些东西

UPDATE FinalRating TA 
INNER JOIN (select spid,AVG(avgRate) avg from AvgRating group by spid) as TB 
ON  TA.spid = TB.spid
SET TA.spid=TB.spid, TA.rating=TB.avg

编辑:现在已经检查了这个并且应该工作得很好,如果行已经存在并且 Finalrating.spid 必须是唯一的,你必须同时运行插入和更新

也许像

INSERT INTO FinalRating
select spid,AVG(avgRat) from AvgRating group by spid

或者如果 FinalRating 表包含更多信息,您还可以指定列

INSERT INTO FinalRating (spid, rating)
select spid,AVG(avgRat) from AvgRating group by spid

如果需要数据子集,还可以向任一查询添加 where 子句。

编辑:如果这不是一次性的并且必须重复运行,则上述解决方案将复制数据

在这种情况下,我建议您合并表格

Merge FinalRating AS TARGET using 
(select spid,AVG(avgRat) as averageRating from AvgRating group by spid) as SOURCE
on (Target.spid = source.spid)
WHEN MATCHED TEHN
UPDATE SET Target.rating = Source.averageRating
WHEN NOT MATCHED BY TARGET THEN
Insert (spid, averageRating)
VALUES(Source.spid, Source.averageRating)

请注意,我给了 AVG(avgRat) 一个别名,以便我以后可以引用它

这应该有效:

Insert into FinalRating 
select spid,AVG(avgRat) from AvgRating group by spid

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM