我想将数据从另一表的一列复制到另一表的另一列。我怎样才能做到这一点?
我尝试了以下方法:
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
但它没有用。
我要将联系人表的“ BusinessCountry”列复制到tblindiantime表的“ CountryName”列。
我想将数据从另一表的一列复制到另一表的另一列。我怎样才能做到这一点?
我尝试了以下方法:
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
但它没有用。
我要将联系人表的“ BusinessCountry”列复制到tblindiantime表的“ CountryName”列。
Answers:
在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
这里查询:
相同表:
UPDATE table_name
SET column1 = column2
不同的表:
UPDATE table_name1
SET column1 = (
SELECT column2
FROM table_name2
WHERE table_name1.id = table_name2.id
);
Table2.Column2 => Table1.Column1
我知道这个问题很旧,但是可接受的答案对我没有用。对于未来的Google员工,这对我有用:
UPDATE table1
SET column1 = (
SELECT column2
FROM table2
WHERE table2.id = table1.id
);
从而:
[Michael Pakhantsov]
希望您有两个关键字段。
UPDATE tblindiantime t
SET CountryName = (SELECT c.BusinessCountry
FROM contacts c WHERE c.Key = t.Key
)
ORA-01427: single-row subquery returns more than one row
select返回多于一行,它将抛出该字段;如果我想选择多于一行,并使用这些值更新该列,该怎么办?
WHERE
。例如,如果tblindiantime有场ContactID
,这是ID
该行的contacts
其中与tblindiantime各行所属,那么你可以使用WHERE tblindiantime.ContactID=contacts.ID
。有关其他变化,请参见cedrikdlb的答案。
一个类似问题的答案对我来说比该问题选择的答案(马克·拜尔斯(Mark Byers))更正确。使用Mark的答案,我的更新的列在所有行中的值都相同(也许与匹配连接的第一行中的值相同)。使用来自另一个线程的ParveenaArora的答案将列更新为正确的值。
转换Parveena的解决方案以使用此问题的表和列名,查询将如下(其中我假设表通过tblindiantime.contact_id关联):
UPDATE tblindiantime
SET CountryName = contacts.BusinessCountry
FROM contacts
WHERE tblindiantime.contact_id = contacts.id;
我认为以前的所有答案都是正确的,下面的这段代码非常有效,特别是如果您必须一次更新多行,请注意:这是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;
我希望这会有所帮助。
现在,使用Management Studio 2016更加容易。
使用SQL Server Management Studio
将数据从一个表复制到另一个表
1.右键单击表,然后单击“设计”,打开包含要复制的列和要复制到的列的表。
2.单击表的选项卡,其中包含要复制的列,然后选择这些列。
3.从“编辑”菜单中,单击“复制”。
4.打开一个新的查询编辑器窗口。
5.右键单击“查询编辑器”,然后单击“在编辑器中设计查询”。
6.在“添加表”对话框中,选择源表和目标表,单击“添加”,然后关闭“添加表”对话框。
7.右键单击查询编辑器的空白区域,指向“更改类型”,然后单击“插入结果”。
8.在“选择插入结果的目标表”对话框中,选择目标表。
9.在查询设计器的上部,单击源表中的源列。
10.查询设计器现在已创建一个INSERT查询。单击“确定”将查询放入原始“查询编辑器”窗口。
11.执行查询以将数据从源表插入到目标表。