首页 > 解决方案 > 在连接的 ON 中使用新创建的字段

问题描述

我想清理一个脏名称,然后在JOIN语句中使用新清理的名称,但 SQL 给出了错误:

Invalid column name clean_name

我的代码如下:

select clean_title,
             clean_name = left(ltrim(rtrim(dirty_name)), charindex(' ',ltrim(rtrim(dirty_name)), charindex(' ',ltrim(rtrim(dirty_name))) + 1))
             from all_names as an
             inner join on locationdatabase as ld
             on an.clean_name = ld.[name]

是否可以以这种方式在 join 语句中“使用”这个新创建的字段?

标签: sql

解决方案


不,您不能在 a 中使用该名称,因为在评估JOIN时它不存在。JOIN您可以使用 aCTE来解决它:

with cte as (
  select clean_title,
         clean_name = left(ltrim(rtrim(dirty_name)), charindex(' ',ltrim(rtrim(dirty_name)), charindex(' ',ltrim(rtrim(dirty_name))) + 1))
  from all_names as an
)
select *
from cte
join locationdatabase ld
on cte.clean_name = ld.[name]

推荐阅读