3

それぞれ複数の RSSI 測定値を持つ複数の readings_miu_id を持つテーブルがあります (RSSI はフィールドの名前でもあります)。だから、私は現在、多くの列を持つデータシートを持っていますが、この会話に関連する 2 つの列は次のようになります。

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 ごとに 1 つのレコードのみを取得します (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

見る:

ACC: 合計クエリに基づくクエリの更新が失敗する

「この動作は設計上の制限です...この動作を回避するには 3 つの方法があります...」

于 2009-06-13T10:20:43.993 に答える
0

レコードを更新する理由がわかりません。

平均読み取り値だけが必要な場合は、次のようにすることができます。

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

同様のシナリオが議論されているこの質問を参照してください。

探しているクエリは次のようなものです (ここには SQL シェルがないため、構文に若干の問題がある可能性があります)。

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 に答える