Sql 基于列条件更新表中的行

Sql 基于列条件更新表中的行,sql,sql-server,Sql,Sql Server,如果gwtypelist中存在,我需要用table_name列更新gwtypelist列的空值 table_name typecode gwtypelist gwtypecode cctl_banlength_ext 13to24months cctl_banlength_ext 13to24months cctl_banlength_ext 25to36months cctl_banlength_ext 25to36mon

如果gwtypelist中存在,我需要用table_name列更新gwtypelist列的空值

    table_name          typecode    gwtypelist           gwtypecode
cctl_banlength_ext  13to24months    cctl_banlength_ext  13to24months
cctl_banlength_ext  25to36months    cctl_banlength_ext  25to36months
cctl_banlength_ext  37to48months    cctl_banlength_ext  37to48months
cctl_banlength_ext  49to60months    cctl_banlength_ext  49to60months
cctl_banlength_ext  6to12months     cctl_banlength_ext  6to12months
cctl_banlength_ext  lessthan6months cctl_banlength_ext  lessthan6months
cctl_banlength_ext  morethan60months       NULL         NULL
cctl_country            UK             cctl_country     UK
cctl_country        Australia             NULL          NULL
cctl_vehicle        Audi                  NULL          NULL
cctl_vehicle        Masserati             NULL          NULL
输出:如果第三列的NULL值存在于第一列中,则应填充该值

    table_name          typecode    gwtypelist           gwtypecode
cctl_banlength_ext  13to24months    cctl_banlength_ext  13to24months
cctl_banlength_ext  25to36months    cctl_banlength_ext  25to36months
cctl_banlength_ext  37to48months    cctl_banlength_ext  37to48months
cctl_banlength_ext  49to60months    cctl_banlength_ext  49to60months
cctl_banlength_ext  6to12months     cctl_banlength_ext  6to12months
cctl_banlength_ext  lessthan6months cctl_banlength_ext  lessthan6months
cctl_banlength_ext  morethan60months cctl_banlength_ext NULL
cctl_country            UK             cctl_country     UK
cctl_country        Australia          cctl_country     NULL
cctl_vehicle        Audi                  NULL          NULL
cctl_vehicle        Masserati             NULL          NULL
我尝试运行一些更新查询,但总是得到相同的结果

update #comp
set gwtypelist = table_name
where gwtypelist in (select distinct table_name from #comp)

请让我知道这是否可以通过update语句或任何替代方案来实现。

我认为这符合您的要求:

update c
    set gwtypelist = c.table_name
    from #comp c
    where c.gwtypelist is null and
          exists (select 1 from #comp c2 where c2.gwtypelist = c.table_name);

仅使用您正在使用的数据库标记您的问题。在表名中使用
#
表示SQL Server。当然可以,但因为它只与update语句相关,所以我标记了其他数据库