3
  1. MS Access 2003
  2. テーブルメイン(MobileNo text 255、FirstName text 255、LastName text 255、Address text 255)
  3. テーブル温度(MobileNo text 255、FirstName text 255、LastName text 255、Address text 255)
  4. メインには100のレコードがあります
  5. Tempには30のレコードがあります
  6. 10個のレコードが両方のテーブルに属しています。
  7. MobileNoのメインベースに属していないレコードをtempからmainに挿入するのが好きです。

Mainで重複データなしでtempから実際にレコードをインポートします。

私は次のクエリを書きます

INSERT INTO main (mobileNo, FirstName, LastName, Address) 
VALUES
    (SELECT DISTINCT Temp.[MobileNo], Temp.[FirstName], temp.[LastName], Temp.[Address] 
     FROM Temp 
     WHERE NOT EXISTS (SELECT * FROM main WHERE Main.[MobileNo] = Temp.[MobileNo]));*

それが正しいか?

4

1 に答える 1

3

Access SQLのINSERT INTO ステートメントには 2 つの形式があります。の付いたものVALUESは、単一の行を挿入するために使用されます。複数の行を挿入したいので、SELECT句を含むバージョンを使用してください。

挿入する行SELECTを返すクエリから始めます。Tempこれは近いはずだと思います:

SELECT
    Temp.MobileNo,
    Temp.FirstName,
    temp.LastName,
    Temp.Address 
FROM
    Temp
    LEFT JOIN main
    ON Temp.MobileNo = main.MobileNo
WHERE main.MobileNo Is Null;

重複する行が含まれるDISTINCT場合は追加します。ステートメントを正しく理解できなかった場合は、ステートメントTempを作成するのに不一致クエリ ウィザードが役立つかもしれません。SELECT

SELECT正しいステートメントを作成したら、それをINSERTクエリ (Access ユーザー インターフェイスでは "追加" クエリと呼ばれるもの) に変更します。

INSERT INTO main
    (
        MobileNo,
        FirstName,
        LastName,
        Address
    )
SELECT
    Temp.MobileNo,
    Temp.FirstName,
    temp.LastName,
    Temp.Address 
FROM
    Temp
    LEFT JOIN main
    ON Temp.MobileNo = main.MobileNo
WHERE main.MobileNo Is Null;
于 2013-01-18T06:51:35.900 に答える