sql-server-2008 - 基于 SELECT 更新列,参数来自 UPDATE

标签 sql-server-2008 sql-update sql

我想做这样的事情。

UPDATE tbl_states AS ts
SET    tbl_states.country_id = (SELECT tbl_countries.country_id
                                FROM   tbl_states ts1
                                       JOIN tbl_countries
                                         ON tbl_countries.country_id_id =
                                            ts1.country_id
                                WHERE  ts1.country_id_id = ts.country_id_id)  

我想根据新主键将来自不同数据库的 country_id 更新为 country_id插入到新数据库中。为了给您一个想法,这里是架构。

CREATE TABLE [dbo].[tbl_countries](
    [country_id] [int] IDENTITY(1,1) NOT NULL,
    [country_id_id] [int] NULL,
    [country_name] [varchar](50) NULL)

country_id_id 是下一个表格中引用的 country_id,我将向您展示tbl_states

CREATE TABLE [dbo].[tbl_states](
    [state_id] [int] IDENTITY(1,1) NOT NULL,
    [state_name] [varchar](50) NULL,
    [country_id] [int] NULL,
    [state_abbr] [char](3) NOT NULL)

我想使用以下 select 语句来获取主键,将此表 tbl_statescountry_id 列更新为上表的主列。

SELECT tbl_countries.country_id
FROM   tbl_states_old
       JOIN tbl_countries
         ON tbl_countries.country_id_id = tbl_states_old.country_id  

对不起,我不知道这个标题叫什么。你能帮我解决这个问题吗?

最佳答案

UPDATE s
    SET country_id = c.country_id
    FROM tbl_states s
        INNER JOIN tbl_countries c
            ON s.country_id = c.country_id_id

关于sql-server-2008 - 基于 SELECT 更新列,参数来自 UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9135701/

相关文章:

where 条件中的 SQL IN 子句导致大数据性能问题

database - 使用 SQL Server 2008 在 Visio 中进行数据库图表的逆向工程

sql-server - 有人有 SQL Azure 数据库的备份策略吗?

php - 如何使用php、mysql更新数据库

mysql - 当查询超过 3 个表时,Left Join 性能太慢

sql-server - 事务复制有什么用?

mysql - CASE 对于 mysql 中的多个更新实际上有用吗?

mysql - 在 MySQL 中查找表数据并将其替换为另一个表

sql - 如果 SQL Server 单元格中有字母,则删除行

mysql - 导入 sql 文件时出错 [#1064]