我有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中。
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]
);
注意:我已经声明了表别名,以使其易于查询并写出列名或表名(它来自哪里)。