SQL Insert 语句的服务器语法

SQL Server syntax for Insert statement

我知道下面的语法不正确,但希望有人能告诉我在 SQL 服务器中正确的语法是什么:

INSERT INTO TBL1 (SELECT * FROM TBL2 WHERE PK not in (SELECT PK FROM TBL1))

TBL1TBL2 就列和数据类型而言都是相同的。

insert 中 table 名称后的括号是列所在的位置。你可以不用括号表达:

INSERT INTO TBL1
    SELECT *
    FROM TBL2
    WHERE PK NOT IN (SELECT PK FROM TBL1);

或遵循最佳实践并列出列:

INSERT INTO TBL1 (col1, col2, col3, . . . )
    SELECT col1, col2, col3, . . . 
    FROM TBL2
    WHERE PK NOT IN (SELECT PK FROM TBL1);