キーの存在を確認し、それに応じて挿入または更新するために個別のクエリを回避しようとしています。グーグルで調べてみると、Access は SQL サーバーの MERGE もサポートしていないようです。
ありがとう
キーの存在を確認し、それに応じて挿入または更新するために個別のクエリを回避しようとしています。グーグルで調べてみると、Access は SQL サーバーの MERGE もサポートしていないようです。
ありがとう
実際、Accessは「Upserting」と呼ばれることもあるのでサポートしています。このソリューションは、Microsoft AccessSolutions-ArvinMeyerとDouglasJ.Steeleによって書かれたMicrosoftAccessMVPのヒント、コツ、秘密と呼ばれる本で見つけました。
これは、Contacts1テーブルから新しいデータを取得し、それをContacts2テーブルに適用するクエリです。
UPDATE Contacts2 LEFT JOIN Contacts1
ON Contacts2.ContactID = Contacts1.ContactID
SET Contacts2.ContactID = [Contacts1].[ContactID],
Contacts2.FirstName = [Contacts1].[FirstName],
Contacts2.LastName = [Contacts1].[LastName],
Contacts2.MobilePhone = [Contacts1].[MobilePhone]
当然、テーブルエイリアスとwhere条件を使用できると思います。また、示されているように角かっこが必要かどうかはわかりませんが、本の例に示されているので、角かっこを入れました(テーブル名とフィールド名にスペースや記号は含まれていませんが)。
そして、これが本から直接取られた別のメモです:
これは、テーブルごとに一意のインデックスが定義されている場合にのみ機能することは明らかです。通常、これはテーブルの主キーになりますが、候補キーが両方のテーブルに存在する限り、実際には必要ありません。(これにより、AutoNumberを主キーとして使用でき、番号が異なることを心配する必要はありません。)インデックスに単一のフィールドが含まれるか、複合キーインデックスであるかは、同じである限り関係ありません。両方のテーブル。
単純な更新クエリでこのトリックを実行できます。簡単な選択クエリ
を作成します。次に、クエリ ビルダーのデザイン ビューで [更新] をクリックします。グリッドの変化を見てください。次に、フィールドを更新する式または値を入力します。クエリを実行する