2009-05-22 16 views
1

私はほとんどこれで終わりました。私は今、readings_miu_idが "DISTINCT"列であるトップ1を除いて、すべてのレコードをテーブルから削除する必要があります。言い換えれば、私は最初のDISTINCT readings_miu_id以外のテーブルからすべてのレコードを削除する必要があります。MS-ACCESS:トップ1を除くすべての行を削除し、クエリからテーブルを更新する

DELETE FROM analyzedCopy2 
WHERE readings_miu_id = some_value 

しかし、私はのようなものにsome_column = some_valueの一部を変更する方法を見つけ出すことはできません:私は私が行うために必要なすべての基本的なdelete文を修正していると仮定しています、その後

where some_column notequal to (select top 1 from analyzedCopy2 as A 
where analyzedCopy2.readings_miu_id = A.readings_miu_id) 

と私はテーブル(computedCopy2)をクエリ(ここでは、analyzeCopy2テーブルのカラムRSSIに格納されているすべての値がどこにあるか)から更新するためにUPDATE文を使用する方法を理解する必要があります。

UPDATE analyzedCopy2 from testQuery3 SET analyzedCopy2.RSSI = 
(select AvgOfRSSI from testQuery3 INNER JOIN analyzedCopy2 on analyzedCopy2.readings_miu_id = testQuery3.readings_miu_id where analyzedCopy2.readings_miu_id = testQuery3.readings_miu_id) 
where analyzedCopy2.readings_miu_id = testQuery3.readings_miu_id 

をどうやら私は、UPDATE文の内部から使用することはできません。私はこれを試してみました。何かご意見は?

私はこれについて非常に非標準的な(もしかしたらおそらくフラット・アウトの間違った)方法だと確信していますが、私はvb.net2008を引っ張って操作してからデータを保存することはできません私はすぐに、今は、良い学習経験であるms-accessでSQLステートメントを使用して固執しています。(たとえSQL文でやらなければならないような奇妙なことをしようとしても、私のデッキ比喩もちろん

答えて

4

MS Access UPDATE SQL文はクエリを参照できませんが、テーブルを参照できます。つまり、クエリ結果をテーブルに格納することです。

SELECT YourQuery.* 
INTO TempTable1 
FROM YourQuery 

今、あなたは、UPDATEクエリでTempTable1を使用することができます。

UPDATE TargetTable 
INNER JOIN TempTable1 ON TempTable1.TargetTableId = TargetTable.Id 
SET TargetTable.TargetField = TempTable1.SourceField 

my answer to this questionを参照してください。

私は私は私がしなければならなかったすべてが使用した必要な各フィールドに同じ情報だったプルするために必要なすべてのレコード以来、あまりにも複雑にしようとしていた
+0

yay !!、ありがとう。その部分のために働いた今、私は、最初の個別のreadings_miu_idではないanalyzeCopy2からすべての行(レコード)を削除する方法を見つけ出すか、次のようなコードを修正する方法を見つけ出す必要があります: SELECT top 1 * fromCopy2 as A readings_miu_id = A.readings_miu_id 私が必要とするものを得るには。 – Bryan

+0

最初の異なるreadings_miu_idをどのように定義しますか?日付はありますか? – Andomar

0

に対して私は、このマシン上のアクセスのコピーを持っていない、と私はアクセスに手を出しているので、それは数年をされているので、私はここに野生の刺しを取っていることができますが、あなたは

delete from analyzedCopy2 
where readings_miu_id not in (select top 1 readings_miu_id from analyzedCopy2 order by...) 

(あなたは多分idで適切トップ1のレコード、順序を取得することにより、順序が必要になるでしょう?)

私はアクセスのコピーをすることなく、第2の1であなたを助けることのない希望を持っていないしました。私はTSQLでそれをどうやって行うのか知っていますが、アクセスはwtfのまったく別のケトルです:-)

+0

これはちょっと近いですが、重複するreadings_miu_idの行だけを削除するのではなく、readings_miu_idがテーブル全体の一番上のreadings_miu_idと等しくないすべてのレコードを削除します。私はこれを試しました: 分析から削除コピー2としてA どこに読書_miu_idがありません(分析トップ2を選択しましたreadings_miu_id analyzeCopy2ここでanalyzeCopy2.readings_miu_id = A.readings_miu_id by readings_miu_id) しかし、何も削除されません。限り、私はこれがトップ1の全体のレコードの代わりにトップ1 readings_miu_id(これは私がそれを行うときには)の値を見ているので、これを言うことができます – Bryan

+0

ええ、私はあなたの元の質問をまさにこれがあなたに与えるものです - あなたはTOP 1以外のすべてを削除したい、それはDanのSQLがあなたに与えるものです。おそらくあなたの質問を編集する必要があります。これは、一時テーブルなしでは完全に実行可能でなければなりません。 –

0

:するために

SELECT DISTINCT readings_miu_id, DateRange, RSSI, ColRSSI, Firmware, CFGDate, FreqCorr, Active, OriginCol, ColID, Ownage, SiteID, PremID, prem_group1, prem_group2 
FROM analyzedCopy2 
ORDER BY readings_miu_id; 

をreadings_miu_idごとに上位1レコードを取得します。

関連する問題