有2张 table 。第一个具有fname
(名字),lname
(姓氏),第二个具有许多列,包括:salutation
(先生,博士等),fname
(名字),mname
(中间名),lname
(姓氏),唯一标识符和一个日期。
我希望根据其他2个表中的信息创建一个包含Salutation
,fname
,mname
,lname
,uid
和added
的第三个表,然后删除第一个表并重新创建第二个表,以删除这些列。
这就是我所拥有的:
CREATE TABLE MyTable
(
Id int IDENTITY (1, 1) PRIMARY KEY,
Salutation varchar(20) NULL DEFAULT (NULL),
Fname varchar(30) NOT NULL,
Mname varchar(30) NULL DEFAULT (NULL),
Lname varchar(30) NOT NULL,
Uid uniqueidentifier NULL DEFAULT (NULL),
Added Date NOT NULL DEFAULT (getdate())
);
INSERT INTO MyTable (Fname, LName)
SELECT Fname, Lname
FROM TABLE1
这是我感到困惑的地方:
INSERT INTO MyTable (Salutation, Fname, Mname, LName, Uid, Added)
SELECT
Salutation, Fname, Mname, LName, Uid, Added
FROM
Table2
WHERE
Fname, Lname NOT IN (SELECT Fname, Lname FROM Table1)
有人可以更正最后一个
INSERT
语句以使其起作用吗?Fname, Lname
字WHERE
最佳答案
您可以将not exists
与相关子查询一起使用:
insert into MyTable (Salutation, Fname, Mname, LName, Uid, Added)
select Salutation, Fname, Mname, LName, Uid, Added from Table2 t
where not exists (select 1 from Table1 where Fname = t.Fname and Lname = t.Lname )
更新
根据OP在以下评论中提供的新条件,我可以确定应在其中包括记录的两种可能情况:
fname
和lname
; Salutation
和lname
。 符合以上条件的查询如下:
insert into MyTable (Salutation, Fname, Mname, LName, Uid, Added)
select Salutation, Fname, Mname, LName, Uid, Added from Table2 t
where not exists (
select 1
from Table1
where Lname = t.Lname and
( Fname = t.Fname or Salutation = t.Salutation )
)
关于sql - SQL Server 2014插入不在其中的位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29835581/