sql - 在连接的 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 语句中“使用”这个新创建的字段?
解决方案
不,您不能在 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]
推荐阅读
- c++ - 指向成员函数的指针 - 无法理解 g++ 错误消息
- ruby-on-rails - 尝试在 Manjaro 上安装 postgresql 时,PG 无法连接到服务器
- python - 如何从 tweet.create_at 获取标准日期时间
- neo4j - 当我使用 Neo4j 和 py2neo 时,节点会重复
- vue.js - V型容器不适用流体
- html - 触发过渡动画 CSS
- laravel - Livewire 不显示数据库中的数据。好吧,如果我 dd 数据,它实际上会
- eclipse-plugin - 当所有项目都消失时从 Eclipse IDE 恢复项目
- coq - 在 coq 中实现/指定排列组
- php - Laravel 更改密码重置 URL