将数据从一列复制到另一列(位于不同的表中)

时间:2010-07-29 11:03:52

标签: sql

我想将数据从一列复制到另一个表的另一列。我怎么能这样做?

我尝试了以下内容:

Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts) 

但它不起作用。

我想将联系人表的“BusinessCountry”列复制到tblindiantime表的“CountryName”列。

8 个答案:

答案 0 :(得分:129)

此处查询:

同桌:

UPDATE table_name 
SET column1 = column2

不同表:

UPDATE table_name1 
    SET column1 = (
        SELECT column2
        FROM table_name2
        WHERE table_name1.id = table_name2.id
    );

答案 1 :(得分:75)

在SQL Server 2008中,您可以按如下方式使用多表更新:

UPDATE tblindiantime 
SET tblindiantime.CountryName = contacts.BusinessCountry
FROM tblindiantime 
JOIN contacts
ON -- join condition here

您需要一个连接条件来指定应更新哪一行。

如果目标表当前为空,那么您应该使用INSERT:

INSERT INTO tblindiantime (CountryName)
SELECT BusinessCountry FROM contacts

答案 2 :(得分:18)

Table2.Column2 => Table1.Column1

我意识到这个问题已经过时了,但接受的答案对我来说并不适用。对于未来的googlers来说,这对我有用:

UPDATE table1 
    SET column1 = (
        SELECT column2
        FROM table2
        WHERE table2.id = table1.id
    );

因此:

  • table1 =包含需要更新的列的表
  • table2 =包含数据
  • 的列的表
  • column1 =需要column2数据的空白列(位于table1中)
  • column2 =包含数据的列(位于table2中)

答案 3 :(得分:14)

希望你有关键字段是两个表。

 UPDATE tblindiantime t
   SET CountryName = (SELECT c.BusinessCountry 
                     FROM contacts c WHERE c.Key = t.Key 
                     )

答案 4 :(得分:7)

A similar question's answerthis question's selected answer(Mark Byers)更适合我。使用Mark的答案,我更新的列在所有行中都获得了相同的值(可能是与第一行匹配的值)。使用ParveenaArora的答案从另一个线程更新了具有正确值的列。

转变Parveena的解决方案以使用这个问题'表和列名称,查询将如下(我假设表通过tblindiantime.contact_id相关):

UPDATE tblindiantime
SET CountryName = contacts.BusinessCountry
FROM contacts
WHERE tblindiantime.contact_id = contacts.id;

答案 5 :(得分:1)

我认为之前的所有答案都是正确的,下面的代码非常有效,如果你必须一次更新多行,请注意:它是PL / SQL

DECLARE
    CURSOR myCursor IS 
      Select contacts.BusinessCountry 
      From contacts c WHERE c.Key = t.Key;
    ---------------------------------------------------------------------
BEGIN
    FOR resultValue IN myCursor LOOP
        Update tblindiantime t
        Set CountryName=resultValue.BusinessCountry 
        where t.key=resultValue.key;
    END LOOP;
END;

我希望这可以提供帮助。

答案 6 :(得分:0)

可以使用不同的属性来解决。

  • 使用单元格控制点击事件。
  • 选择转置到其他列的列值。
  • 将所选值发送到另一个文本框或级别,无论您填写什么方便,还有一个补充按钮来修改所选属性。
  • 在数据库中更新整个堆栈并使用sql查询创建一个算法来克服这个问题,将其转换到另一列。

答案 7 :(得分:0)

现在管理工作室2016更加轻松。

使用SQL Server Management Studio

将数据从一个表复制到另一个表

1.右键单击表格,然后单击设计,打开要复制的列和要复制的列的表格。

2.单击包含要复制的列的表的选项卡,然后选择这些列。

3.从修改菜单中,点击复制

4.打开一个新的查询编辑器窗口。

5.右键单击查询编辑器,然后单击编辑器中的设计查询

6.在添加表对话框中,选择源表和目标表,单击添加,然后关闭添加表对话框框。

7.右键单击查询编辑器的空白区域,指向更改类型,然后单击插入结果

8.在选择插入结果的目标表对话框中,选择目标表。

9.在查询设计器的上半部分,单击源表中的源列。

10.查询设计器现在已创建INSERT查询。单击“确定”将查询放入原始“查询编辑器”窗口。

11.执行查询以将源表中的数据插入目标表。

了解更多信息https://docs.microsoft.com/en-us/sql/relational-databases/tables/copy-columns-from-one-table-to-another-database-engine