在SQL Server中,可以使用insert将行插入到表中。。SELECT语句:
INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3
FROM other_table
WHERE sql = 'cool'
是否也可以使用SELECT更新表?我有一个包含这些值的临时表,并希望使用这些值更新另一个表。也许是这样的:
UPDATE Table SET col1, col2
SELECT col1, col2
FROM other_table
WHERE sql = 'cool'
WHERE Table.id = other_table.id
SQL数据库中使用INNER JOIN从SELECT进行UPDATE
由于这篇文章的回复太多了,投票最多,我想我也会在这里提供我的建议。虽然这个问题很有趣,但我在许多论坛网站上看到过,并使用INNER JOIN和截屏制作了一个解决方案。
首先,我创建了一个名为schoolold的表,并插入了一些与列名相关的记录并执行它。
然后我执行SELECT命令来查看插入的记录。
然后我创建了一个名为schoolnew的新表,并对其执行了类似的上述操作。
然后,为了查看其中插入的记录,我执行SELECT命令。
现在,我想对第三行和第四行进行一些更改,为了完成此操作,我使用INNER JOIN执行UPDATE命令。
要查看更改,我执行SELECT命令。
通过使用INNER JOIN with UPDATE语句,您可以看到表schoolold的第三和第四记录如何容易地替换为表schoolnew。
SQL数据库中使用INNER JOIN从SELECT进行UPDATE
由于这篇文章的回复太多了,投票最多,我想我也会在这里提供我的建议。虽然这个问题很有趣,但我在许多论坛网站上看到过,并使用INNER JOIN和截屏制作了一个解决方案。
首先,我创建了一个名为schoolold的表,并插入了一些与列名相关的记录并执行它。
然后我执行SELECT命令来查看插入的记录。
然后我创建了一个名为schoolnew的新表,并对其执行了类似的上述操作。
然后,为了查看其中插入的记录,我执行SELECT命令。
现在,我想对第三行和第四行进行一些更改,为了完成此操作,我使用INNER JOIN执行UPDATE命令。
要查看更改,我执行SELECT命令。
通过使用INNER JOIN with UPDATE语句,您可以看到表schoolold的第三和第四记录如何容易地替换为表schoolnew。
整合所有不同的方法。
选择更新使用公共表表达式更新合并
示例表结构如下,将从Product_BAK更新为Product表。
表产品
CREATE TABLE [dbo].[Product](
[Id] [int] IDENTITY(1, 1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Description] [nvarchar](100) NULL
) ON [PRIMARY]
表产品_BAK
CREATE TABLE [dbo].[Product_BAK](
[Id] [int] IDENTITY(1, 1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Description] [nvarchar](100) NULL
) ON [PRIMARY]
1.选择更新
update P1
set Name = P2.Name
from Product P1
inner join Product_Bak P2 on p1.id = P2.id
where p1.id = 2
2.使用公共表表达式更新
; With CTE as
(
select id, name from Product_Bak where id = 2
)
update P
set Name = P2.name
from product P inner join CTE P2 on P.id = P2.id
where P2.id = 2
3.合并
Merge into product P1
using Product_Bak P2 on P1.id = P2.id
when matched then
update set p1.[description] = p2.[description], p1.name = P2.Name;
在这个Merge语句中,如果在目标中找不到匹配的记录,但在源中存在,我们可以插入,请查找语法:
Merge into product P1
using Product_Bak P2 on P1.id = P2.id;
when matched then
update set p1.[description] = p2.[description], p1.name = P2.Name;
WHEN NOT MATCHED THEN
insert (name, description)
values(p2.name, P2.description);
declare @tblStudent table (id int,name varchar(300))
declare @tblMarks table (std_id int,std_name varchar(300),subject varchar(50),marks int)
insert into @tblStudent Values (1,'Abdul')
insert into @tblStudent Values(2,'Rahim')
insert into @tblMarks Values(1,'','Math',50)
insert into @tblMarks Values(1,'','History',40)
insert into @tblMarks Values(2,'','Math',30)
insert into @tblMarks Values(2,'','history',80)
select * from @tblMarks
update m
set m.std_name=s.name
from @tblMarks as m
left join @tblStudent as s on s.id=m.std_id
select * from @tblMarks