仅当目标 table 中不存在该行时,如何将一个 table 中的行复制到另一个
How to copy row in one table to another only when that row doesn't exist in target table
我正在尝试编写一个语句,为联系人 table 中不在员工 table 中的每个条目向员工 table 添加行。
我还需要使用新的 ManagerId = 3 更新 Employees table 中的新条目。
这是我目前的情况,我想我的部分语法有误。
INSERT INTO Employees
SELECT * FROM Contacts
Left Join Employees on Employees.Firstname = Contacts.FirstName
and Employees.LastName = Contacts.LastName
WHERE Employees.FirstName and Employees.LastName = NULL
--set all new added employess's manager ID to 3
下面insert
用not exists
判断是否插入新行
INSERT INTO dbo.Employees (**List columns here**, ManagerId)
SELECT (**List columns here**, 3)
FROM dbo.Contacts C
WHERE NOT EXISTS (
SELECT 1
FROM dbo.Employees E
WHERE E.FirstName = C.FirstName
AND E.LastName = C.LastName
)
注意事项:
- 始终列出
insert
和 select
的所有列 - 这样您将在未来避免很多痛苦。
- 为您的对象设计质量的最佳实践。
- 最好的做法是为您的表格添加别名,因为这样可以提高可读性SQL。
要从另一个 table 向 table 插入新行,您
必须提到列名,因为 table 有不同的
命名约定和不同的列数。
要映射列,您必须定义源列和目标列,
他们的名字和在 table.
中的位置
INSERT INTO Employees (Firstname, LastName, ManagerId, 'AND ALL OTHER COLUMNS WHICH YOU WANT TO COPY')
SELECT Firstname, LastName, 3, 'AND ALL OTHER COLUMNS WHICH YOU WANT TO COPY' FROM Contacts contacts
WHERE NOT EXISTS (
SELECT 1
FROM Employees e
WHERE e.FirstName = contacts.FirstName
AND e.LastName = contacts.LastName
)
试试这个,然后在此处添加您的特定列 'AND ALL OTHER COLUMNS WHICH YOU WANT TO COPY'
我正在尝试编写一个语句,为联系人 table 中不在员工 table 中的每个条目向员工 table 添加行。
我还需要使用新的 ManagerId = 3 更新 Employees table 中的新条目。
这是我目前的情况,我想我的部分语法有误。
INSERT INTO Employees
SELECT * FROM Contacts
Left Join Employees on Employees.Firstname = Contacts.FirstName
and Employees.LastName = Contacts.LastName
WHERE Employees.FirstName and Employees.LastName = NULL
--set all new added employess's manager ID to 3
下面insert
用not exists
判断是否插入新行
INSERT INTO dbo.Employees (**List columns here**, ManagerId)
SELECT (**List columns here**, 3)
FROM dbo.Contacts C
WHERE NOT EXISTS (
SELECT 1
FROM dbo.Employees E
WHERE E.FirstName = C.FirstName
AND E.LastName = C.LastName
)
注意事项:
- 始终列出
insert
和select
的所有列 - 这样您将在未来避免很多痛苦。 - 为您的对象设计质量的最佳实践。
- 最好的做法是为您的表格添加别名,因为这样可以提高可读性SQL。
要从另一个 table 向 table 插入新行,您 必须提到列名,因为 table 有不同的 命名约定和不同的列数。
要映射列,您必须定义源列和目标列, 他们的名字和在 table.
中的位置
INSERT INTO Employees (Firstname, LastName, ManagerId, 'AND ALL OTHER COLUMNS WHICH YOU WANT TO COPY')
SELECT Firstname, LastName, 3, 'AND ALL OTHER COLUMNS WHICH YOU WANT TO COPY' FROM Contacts contacts
WHERE NOT EXISTS (
SELECT 1
FROM Employees e
WHERE e.FirstName = contacts.FirstName
AND e.LastName = contacts.LastName
)
试试这个,然后在此处添加您的特定列 'AND ALL OTHER COLUMNS WHICH YOU WANT TO COPY'