> 更新SQL Server表,并使用SELECT语句的数据
>> SQL Server允许使用INSERT...SELECT
插入行。 但是,使用SELECT
>语句以最初尝试(例如,UPDATE Table SET col1, col2 SELECT col1, col2...
)的方式直接更新表。 正确的方法涉及使用子征服或加入。
>假设您需要从临时表中更新具有值的表。 不正确的尝试可能是这样的:
<code class="language-sql">UPDATE Table SET col1, col2 SELECT col1, col2 FROM other_table WHERE sql = 'cool' WHERE Table.id = other_table.id</code>
正确的方法:
1。子查询方法:
此方法使用子量来获取更新值:
><code class="language-sql">UPDATE Table SET col1 = (SELECT col1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id), col2 = (SELECT col2 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id) WHERE EXISTS (SELECT 1 FROM other_table WHERE sql = 'cool' AND Table.id = other_table.id)</code>
EXISTS
子句可确保仅在other_table
中匹配条目的行发生更新
2。基于联接的方法:
此方法利用A进行更有效的更新:JOIN
<code class="language-sql">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'</code>>基于
>列中的行匹配JOIN
>> Table_A
,仅应用更新。
Table_B
subqueries and Joins都提供了使用id
>语句派生的数据更新SQL Server表的有效方法,从而增强了数据操纵灵活性和性能。
以上是如何使用 SELECT 语句中的值更新 SQL Server 表?的详细内容。更多信息请关注PHP中文网其他相关文章!