Sql 基于列条件更新表中的行
如果gwtypelist中存在,我需要用table_name列更新gwtypelist列的空值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
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语句相关,所以我标记了其他数据库