如何将sql查询写入此数据库?

如何将sql查询写入此数据库?,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我有一个名为dbo.name和dbo.class的两个表 名字 阶级 在这里,我需要通过映射表来填充mainid,这意味着假设D是一个主名称,并且id 4应该在dbo.class中成为mainid。我应该在第一排得到4分。如果c是另一个主名称,我应该将c的id作为第二行的主id 2 3 如何为此编写查询?请帮助为此编写查询。不确定我是否完全理解此问题。如果类表是空的,而您只是希望从名称表填充它;试试这个: insert into class (mainid) s

我有一个名为dbo.name和dbo.class的两个表

名字

阶级


在这里,我需要通过映射表来填充mainid,这意味着假设D是一个主名称,并且id 4应该在dbo.class中成为mainid。我应该在第一排得到4分。如果c是另一个主名称,我应该将c的id作为第二行的主id

      2           3

如何为此编写查询?请帮助为此编写查询。

不确定我是否完全理解此问题。如果类表是空的,而您只是希望从名称表填充它;试试这个:

insert into class (mainid)
select id from name
但我不确定我是否完全理解你的问题。我想我需要更多的信息。比如为什么你要成为第一?类表是否为空,您只需要使用name中的数据加载它?或者类表中已经有数据了

如果类表为空,您可以运行我在上面发布的sql,从名称表加载它。没有必要将这两个表“映射”在一起。但是,如果类表中已经有数据,并且您不想复制任何内容,则必须运行以下操作:

insert into class (mainid)
select id from name N
where N.id not in 
    (select distinct (C.mainid) from class C)
或者更好的方法:

insert into class (mainid)
select id from name N
where not exists (select 1 from class C where N.id = C.mainid) 

在你能用连贯的例子清楚地解释之前,这是你能得到的最好结果:

SELECT
 dbo.name.id, dbo.class.mainid
FROM
 dbo.name INNER JOIN dbo.class ON dbo.name.id = dbo.class.id
并将其插入到新表中:

CREATE TABLE dbo.newtable 
SELECT
     dbo.name.id, dbo.class.mainid
    FROM
     dbo.name INNER JOIN dbo.class ON dbo.name.id = dbo.class.id

尝试但那不是正确的,后来我卡住了:-(我不明白你怎么填写mainid。你能用其他词解释一下吗?为什么mainid有4到Id 1和3到Id 2?你怎么知道什么是主名称?主Id应该是4,因为它有一个名称D。我需要填写名称D的Id。4-D,3-C。我需要填写主Id…我们试图得到的是你在
类中没有任何内容指向D或4(或任何其他),那么您如何知道ID=1的类的mainid应为4。我需要将ID作为mainid填充到其他表中“通过映射表填充mainid”的“填充”是指类表是空的吗?通过“映射”您的意思是类表不是空的,或者其中可能有您不想复制的数据?
SELECT
 dbo.name.id, dbo.class.mainid
FROM
 dbo.name INNER JOIN dbo.class ON dbo.name.id = dbo.class.id
CREATE TABLE dbo.newtable 
SELECT
     dbo.name.id, dbo.class.mainid
    FROM
     dbo.name INNER JOIN dbo.class ON dbo.name.id = dbo.class.id