将数据从SQL Server表导入另一个表

将数据从SQL Server表导入另一个表,sql,sql-server,Sql,Sql Server,我无法正确获取此SQL语句。我想将band电子邮件选择到另一个表中,但我不明白我做错了什么: INSERT INTO submitted (mail) SELECT submitted.bandid, band.mail, band.id FROM band WHERE submitted.bandid = band.id 有人能帮我吗?试试看,您已经指定了1列要插入,但是您的SELEC

我无法正确获取此SQL语句。我想将band电子邮件选择到另一个表中,但我不明白我做错了什么:

INSERT INTO submitted (mail)
    SELECT
        submitted.bandid,
        band.mail,
        band.id
    FROM 
        band
    WHERE 
        submitted.bandid = band.id

有人能帮我吗?

试试看,您已经指定了1列要插入,但是您的SELECT查询包含3列,而且您的查询中的表没有联接:

INSERT INTO submitted (mail) 
SELECT
band.mail
FROM band 
INNER JOIN submitted ON submitted.bandid = band.id

尝试此操作,您已指定要插入的1列,但您的SELECT查询包含3列,并且您的查询中的表未联接:

INSERT INTO submitted (mail) 
SELECT
band.mail
FROM band 
INNER JOIN submitted ON submitted.bandid = band.id

您没有提到收到的错误消息,但我怀疑问题在于,在语句的
INSERT
部分中只指定了一列,而
SELECT
部分返回了许多列

有一个很好的示例说明了如何构造此查询:

仅将一个表中的某些列复制到另一个表中:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

您没有提到收到的错误消息,但我怀疑问题在于,在语句的
INSERT
部分中只指定了一列,而
SELECT
部分返回了许多列

有一个很好的示例说明了如何构造此查询:

仅将一个表中的某些列复制到另一个表中:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

我怀疑您想要的是
更新
,而不是
插入

UPDATE s
    SET mail = b.mail
    FROM submitted s JOIN
         band b
         ON s.bandid = b.id;

insert
在表中插入新行<代码>更新更新现有行中的列。

我怀疑您想要的是
更新
,而不是
插入

UPDATE s
    SET mail = b.mail
    FROM submitted s JOIN
         band b
         ON s.bandid = b.id;

insert
在表中插入新行
update
更新现有行中的列。

您是说只想在新表中的一列(
mail
)中插入—但您从原始表中选择了三列—这行不通。在目标表中定义要插入这些值的三列,或者只选择一列,实际用于从源表中插入数据,您说只想插入一列(
mail
)在新表中,但您正在从原始表中选择三列,这将不起作用。在目标表中定义要插入这些值的三列,或者只选择要实际用于从源表插入数据的一列