3

我有一个包含多个读数的表_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 type 语句来做到这一点。)但是我在弄清楚第一部分时遇到了问题。我尝试过的似乎应该接近的 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;

请帮忙!

4

3 回答 3

0

不确定为什么要更新记录。

如果你只想要一个平均读数,你可以这样做:

SELECT readings_miu_id, AVG(RSSI)
FROM analyzedCopy2 
GROUP BY readings_miu_id
于 2009-05-21T16:36:42.623 回答
0

请参阅这个问题,其中讨论了类似的场景。

您正在查找的查询是这样的(我这里没有 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
于 2009-05-26T12:47:46.443 回答
0

看:

ACC:根据总计查询失败更新查询

“这种行为是一种设计限制……有三种方法可以解决这种行为……”

于 2009-06-13T10:20:43.993 回答