gpt4 book ai didi

SQL Server 2014 插入不在其中的位置

转载 作者:行者123 更新时间:2023-12-02 19:05:32 25 4
gpt4 key购买 nike

有 2 张 table 。第一个有 fname (名字),lname (姓氏),第二个有许多列,包括: salutation (先生、博士等),fname (名字),mname (中间名),lname (姓氏)、唯一标识符和日期。

我希望创建第三个表,其中包含 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吗?声明使其有效?

  1. 它不喜欢Fname, LnameWHERE 的右侧词
  2. 我应该先从第二个表插入,然后再从第一个表插入吗?

最佳答案

您可以将 not contains 与相关子查询一起使用:

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在下面的评论中提供的新条件,我可以确定应包含记录的两种可能情况:

  • fnamelname 匹配;
  • Salutationlname 匹配。

符合上述条件的查询如下:

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 Server 2014 插入不在其中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com