6 sql sql-server sql-insert sql-server-2014
有2个表.第一个有fname(名字),lname(姓),第二个有很多列,包括:( salutation先生,博士等),fname(名字),mname(中间名),lname(姓),独特标识和日期.
我希望创建包含第三表中Salutation,fname,mname,lname,uid,added从另外2本表中的信息,然后我将丢弃该第一表和重新创建第二表中删除那些列.
这就是我所拥有的:
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
Run Code Online (Sandbox Code Playgroud)
这是我困惑的地方:
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)
Run Code Online (Sandbox Code Playgroud)
有人可以更正最后一个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 )
Run Code Online (Sandbox Code Playgroud)
更新
根据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 )
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |