我有一个包含多个readings_miu_id的表,每个读数具有多个RSSI读数(RSSI也是该字段的名称)。所以,我目前有一个数据表,有很多专栏,但这个对话的两个相关内容看起来像这样:
readings_miu_id RSSI
=============== ====
11011032 -90
11011032 -81
11011032 -62
11011032 -84
11011032 -86
11010084 -84
11010084 -86
11010084 -87
等等。
我最初的计划是将具有相同readings_miu_id的每条记录的RSSI值更改为该readings_miu_id的平均RSSI(除了单个RSSI将替换为该miu的平均RSSI之外,它应与上述相同) ),然后为每个不同的readings_miu_id只拉一条记录(我很确定我可以用select top 1类型语句。)但是我在解决第一部分问题时遇到了问题。我试过的sql语句似乎应该是关闭的:
UPDATE analyzedCopy2 as A
SET analyzedCopy2.RSSI = Avg(RSSI)
where readings_miu_id = A.readings_miu_id
和
UPDATE analyzedCopy2 as A
SET RSSI = Avg(select RSSI from analyzedCopy2
where readings_miu_id = A.readings_miu_id)
WHERE readings_miu_id = A.readings_miu_id;
请帮忙!
答案 0 :(得分:0)
不确定为什么要更新记录。
如果你只想要一个平均读数,你可以这样做:
SELECT readings_miu_id, AVG(RSSI)
FROM analyzedCopy2
GROUP BY readings_miu_id
答案 1 :(得分:0)
请参阅此question,其中讨论了类似的情况。
您正在寻找的查询是这样的(我这里没有SQL shell,因此可能会有轻微的语法问题):
UPDATE analyzedCopy2 AS target
INNER JOIN
(
select avg(RSSI) as AvgRSSI, readings_miu_id
from analyzedCopy2 T
group by readings_miu_id
) as source
ON target.readings_miu_id = source.readings_miu_id
SET target.RSSI = source.AvgRSSI
答案 2 :(得分:0)