在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

当前回答

这可能是执行更新的一个特殊原因(例如,主要在过程中使用),也可能对其他人来说是显而易见的,但也应该指出,您可以在不使用join的情况下执行update select语句(如果您正在更新的表之间没有公共字段)。

update
    Table
set
    Table.example = a.value
from
    TableExample a
where
    Table.field = *key value* -- finds the row in Table 
    AND a.field = *key value* -- finds the row in TableExample a

其他回答

这样地;但是您必须确保更新表和from之后的表是相同的。

UPDATE Table SET col1, col2
FROM table
inner join other_table Table.id = other_table.id
WHERE sql = 'cool'

甚至还有一种更短的方法,可能会让你感到惊讶:

示例数据集:

CREATE TABLE #SOURCE ([ID] INT, [Desc] VARCHAR(10));
CREATE TABLE #DEST   ([ID] INT, [Desc] VARCHAR(10));

INSERT INTO #SOURCE VALUES(1,'Desc_1'), (2, 'Desc_2'), (3, 'Desc_3');
INSERT INTO #DEST   VALUES(1,'Desc_4'), (2, 'Desc_5'), (3, 'Desc_6');

代码:

UPDATE #DEST
SET #DEST.[Desc] = #SOURCE.[Desc]
FROM #SOURCE
WHERE #DEST.[ID] = #SOURCE.[ID];
UPDATE
    Table_A
SET
    Table_A.col1 = Table_B.col1,
    Table_A.col2 = Table_B.col2
FROM
    Some_Table AS Table_A
    INNER JOIN Other_Table AS Table_B
        ON Table_A.id = Table_B.id
WHERE
    Table_A.col3 = 'cool'

单向

UPDATE t 
SET t.col1 = o.col1, 
    t.col2 = o.col2
FROM 
    other_table o 
  JOIN 
    t ON t.id = o.id
WHERE 
    o.sql = 'cool'

SQL数据库中使用INNER JOIN从SELECT进行UPDATE

由于这篇文章的回复太多了,投票最多,我想我也会在这里提供我的建议。虽然这个问题很有趣,但我在许多论坛网站上看到过,并使用INNER JOIN和截屏制作了一个解决方案。

首先,我创建了一个名为schoolold的表,并插入了一些与列名相关的记录并执行它。

然后我执行SELECT命令来查看插入的记录。

然后我创建了一个名为schoolnew的新表,并对其执行了类似的上述操作。

然后,为了查看其中插入的记录,我执行SELECT命令。

现在,我想对第三行和第四行进行一些更改,为了完成此操作,我使用INNER JOIN执行UPDATE命令。

要查看更改,我执行SELECT命令。

通过使用INNER JOIN with UPDATE语句,您可以看到表schoolold的第三和第四记录如何容易地替换为表schoolnew。