存储过程,连接两个查询,并写入另一个 table

Stored procedure, that Join two query, and write in another table

我正在尝试编写一个将数据插入 table 的存储过程,但如果目标 table 中已经存在相同的条目,则不会插入数据。

存储过程还应该能够更新已存在行的单元格。

我正在使用 table 和视图,并对它们进行内部连接。

到目前为止,我一直在尝试使用 INSERT INTOSELECT EXCEPT SELECT 方法。

当我 运行 它时,它写入 table 但不关心是否已经有条目...

INSERT INTO DestinationTable
    SELECT data 
    FROM TABLE 
    INNER JOIN V_VIEW ON TABLE.ID = V_VIEW_ID
    EXCEPT 
    SELECT data 
    FROM DestinationTable 

有没有人知道为什么它没有按预期工作?

您还知道更新现有行的特定单元格的方法吗?

单元格是数值数据,可以迭代

谢谢你们,希望尽快看到你们的答案!

我认为 SQL MERGE 语句在您的场景中很有用

MERGE
    [ TOP ( expression ) [ PERCENT ] ]
    [ INTO ] <target_table> [ WITH ( <merge_hint> ) ] [ [ AS ] table_alias ]  
    USING <table_source> [ [ AS ] table_alias ]
    ON <merge_search_condition>  
    [ WHEN MATCHED [ AND <clause_search_condition> ]  
        THEN <merge_matched> ] [ ...n ]  
    [ WHEN NOT MATCHED [ BY TARGET ] [ AND <clause_search_condition> ]  
        THEN <merge_not_matched> ]  
    [ WHEN NOT MATCHED BY SOURCE [ AND <clause_search_condition> ]  
        THEN <merge_matched> ] [ ...n ]  
    [ <output_clause> ]  
    [ OPTION ( <query_hint> [ ,...n ] ) ]
; 

Microsoft 官方文档:SQL MERGE

示例和解释:Using MERGE in SQL Server to insert, update and delete at the same time