MS访问插入无重复

时间:2013-01-18 06:25:06

标签: insert ms-access-2003

  1. MS Access 2003
  2. 表格主页(MobileNo文本255,FirstName文本255,LastName文本255,地址文本255)
  3. 表格温度(MobileNo文本255,FirstName文本255,LastName文本255,地址文本255)
  4. Main有100条记录
  5. Temp有30条记录
  6. 10条记录属于两个表格。
  7. 我想从temp中插入那些不属于MobileNo主要基础的记录。
  8. 实际从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]));*
    

    这是对的吗?

1 个答案:

答案 0 :(得分:3)

Access SQL中有INSERT INTO Statement的两种形式。 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;