[使用不存在插入比较表中的其他表

问题描述 投票:0回答:1

我有3张桌子:

Server_db_relation

数据库列表

DatabaseList_Archive

目标是将表Server_db_relation和DatabaseList与列ServerName和DatabaseName中的值进行比较。如果表Server_db_relation中的值不存在,而DatabaseList中的值存在,则应将DabaseList中的整个行插入DataList_Archive中(这两个表相同)。另外,如果可能的话,该行已插入DatabaseList_Archieve,然后从DatabaseList删除记录。

INSERT INTO DatabaseList_Archieve (Column1, Column2...)
SELECT * FROM DatabaseList
WHERE NOT EXISTS(
SELECT 1 FROM DabaseList, Server_db_relation WHERE
DatabaseList.ServerName = Server_db_relation.ServerName and DatabaseList.DatabaseName = Server_db_relatio.[Database])

我没有任何语法错误,但没有任何行受到影响。我添加了2个测试行,这些行我知道存在于DatabaseList中,而不存在于Server_db_relation中。

sql sql-server database syntax sql-insert
1个回答
0
投票
INSERT INTO DatabaseList_Archieve (Column1, Column2...) SELECT dbl.col1, dbl.col2, . . FROM DatabaseList dbl WHERE NOT EXISTS(SELECT 1 FROM Server_db_relation sdb WHERE dbl.ServerName = sdb.ServerName AND dbl.DatabaseName = sdb.[Database] );

注意:我已经声明了表别名,以使其易于查询并写出列名或表名(它来自哪里)。

© www.soinside.com 2019 - 2024. All rights reserved.