2

キーが別のクエリに存在するかどうかに基づいて更新する 1 つのフィールドを持つ MS Access テーブルがあります。調査を試みたところ、似ているが同じではない問題が見つかりました (例: Access 2003 - 選択クエリの結果に基づいて更新クエリを実行する) が、それらを自分の状況に変換する方法がわかりません。

基本的に、更新が必要なすべてのエントリの主キーを返すクエリを作成しました。

そう

クエリ: "temp" は、変更するすべてのレコードの KeywordID を返します。24Kレコードです

次に、更新したいテーブルがあります

テーブル:「キーワード」には「優先度」フィールドがあり、KeywordID が一時クエリに含まれるすべてのレコードに対して、これを [はい] に設定したいと考えています。約 900K 行あります。

何をすべきか分からない: 私が試したすべての間違った方法を以下に示します:

UPDATE keywords SET keywords.Priority = Yes  JOIN temp ON keywords.KeywordID = temp.KeywordID ; ' SYNTAX error

UPDATE keywords SET keywords.Priority = Yes INNER JOIN temp ON keywords.KeywordID = temp.KeywordID ; ' SYNTAX error

UPDATE keywords INNER JOIN temp ON keywords.KeywordID = temp.KeywordID SET keywords.Priority = Yes; ' Must use an updatable query

UPDATE keywords SET keywords.Priority = Yes WHERE EXISTS (SELECT temp.KeywordID from TEMP); ' tries to update 900K records

どんな援助も素晴らしいでしょう。

4

2 に答える 2

0

現在、これをテストするためのアクセス権はありませんが、試してみる価値はあります

UPDATE キーワード SET キーワード.優先度 = はい JOIN 一時キーワードでキーワード.KeywordID = temp.KeywordID WHERE キーワード.KeywordID = temp.KeywordID;

UPDATE キーワード INNER JOIN 一時 ON キーワード.ID = temp.ID SET キーワード.優先度 = True;

于 2013-06-17T04:32:12.547 に答える
0

この例では、最初に一時テーブルを作成する必要がない場合があります。

UPDATE keywords
SET Priority = -1
WHERE keywordID IN (SELECT keywordID FROM temp)

Priority が Yes/No フィールドの場合、-1 は True と同じ効果があります

于 2013-06-17T08:41:09.650 に答える