【发布时间】:2020-04-18 10:03:14
【问题描述】:
我有 3 张桌子:
- Server_db_relation
- 数据库列表
- DatabaseList_Archive
目标是根据ServerName 和DatabaseName 列中的值比较表Server_db_relation 和DatabaseList。如果值在Server_db_relation 表中不存在,但在DatabaseList 中存在,则它应该将DatabaseList 中的整行插入DataList_Archive(这两个表的结构相同)。
此外,如果可能,该行已插入到DatabaseList_Archive,然后从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 的测试行。
【问题讨论】:
-
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI
JOIN语法-92 SQL 标准(25 多年前),不鼓励使用它 -
@marc_s 非常感谢您指出并链接。生病改变它,它适用于代码的哪一部分?
标签: sql sql-server database syntax sql-insert