3
  1. 微软访问 2003
  2. 主表(MobileNo 文本 255、FirstName 文本 255、LastName 文本 255、地址文本 255)
  3. 表温度(MobileNo 文本 255、FirstName 文本 255、LastName 文本 255、地址文本 255)
  4. 主要有 100 条记录
  5. Temp 有 30 条记录
  6. 10 条记录属于两个表。
  7. 我喜欢将那些不属于 MobileNo 上的主库的记录从临时插入到主库中。

实际上从 temp 导入记录,而 Main 中没有重复数据。

我在下面写了一个查询

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 语句。withVALUES用于插入单行。由于要插入多行,请使用包含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 回答