我一直在阅读SQL插入INTO的W3 Schools,根据我的理解,我创建了一个数据备份副本到一个新表。我有300多条记录要添加。
我有4张桌子,其中一张是我应对的来源。 1)卡访问,这是源 2)pro_Profile,主目标 3)pro_Email,secondary dest 4)pro_Address,第三个目标
我无法控制这个数据库方案。要重建所有内容以使用1个表然后使用3个表,这是太多的工作。我添加的数据也许与存在的数据重复,因此我们也需要跳过这些数据。
卡访问权限包含以下字段: 映射到pro_Profile的CSUID firstName映射到pro_Profile lastName映射到pro_Profile 映射到pro_Profile的eName 电子邮件地址映射到pro_Email 联系电话号码,映射到pro_Address
一旦我复制到Pro_Profile,它将需要获得主键,profileID,它是所有这些表中对配置文件的引用。
如何将所有这些数据首先复制到pro_Profile中,以便获取唯一的键profileID,它是所有其他表的forgien键?
到目前为止,这是我的代码:
SELECT
FirstName,
LastName,
eName,
CSUID
INTO
WHERE NOT EXISTS (
Select
firstName,
LastName
From
pro_Profile
)
影响0行的新QUERY
INSERT INTO pro_Profile ("firstName","lastName","userName","departmentID","csuID")
SELECT "First Name","Last Name","eName","Department","CSUID"
FROM "Card Access"
WHERE NOT EXISTS (
Select
firstName,
LastName
From
pro_Profile
)
答案 0 :(得分:1)
插入的格式为
INSERT INTO table1 ( column1 )
SELECT col1
FROM table2
所以基本上你选择要插入的内容。您将能够将其作为所有表中的一个语句来执行,并且还可以添加where子句。查看this问题的答案。
更新: 首先编写sql查询以获取要插入的行。所以你上面的查询:
SELECT "First Name","Last Name","eName","Department","CSUID"
FROM "Card Access"
WHERE NOT EXISTS (
Select
firstName,
LastName
From
pro_Profile
)
单独运行时应返回您要插入的所有结果。当你跑步时,你会得到什么?
更新:我认为你是不存在的误解。查看this。我认为你需要这样的东西:
SELECT "First Name","Last Name","eName","Department","CSUID"
FROM "Card Access" ca
WHERE (
Select count(*)
From pro_Profile
WHERE firstName = ca.firstName
AND LastName = ca.lastName
) = 0
更新:或者你应该能够做到:
SELECT "First Name","Last Name","eName","Department","CSUID"
FROM "Card Access" ca
WHERE NOT EXISTS (
Select
firstName,
LastName
From
pro_Profile
WHERE firstName = ca.firstName
AND LastName = ca.lastName
)