sql - 在视图中使用带有 SQL 函数的连接
问题描述
对于你们中的一些人来说,这可能是一个非常基本的问题,但是请耐心等待这个新手学习 SQL Server。
我需要创建一个视图,我试图在其中连接两个表中的多个列。唯一的问题是,其中一列的值具有额外的字符,需要使用 RIGHT 函数或 SUBSTRING 将其删除,以便能够匹配另一个表中的相应列。
这是我写的,但我需要帮助我在 SerialNo 列中做错了什么:
SELECT a.ID,
a.SerialNo,
a.Price,
a.ItemName,
b.ID, b.SNumber,
b.ItemDesc
FROM Table1 a LEFT JOIN
Table2 b ON a.ID = b.ID AND
a.Price = b.Price AND
a.SerialNo = (SELECT RIGHT(b.SNumber, 6) AS b.SNumber from Table2)
解决方案
您不需要子查询来处理第二个连接条件,只需RIGHT
直接调用:
SELECT a.ID, a.SerialNo, a.Price, a.ItemName, b.ID, b.SNumber, b.ItemDesc
FROM Table1 a
LEFT JOIN Table2 b
ON a.ID = b.ID AND
a.Price = b.Price AND
a.SerialNo = RIGHT(b.SNumber, 6);
附带说明一下,如果您认为需要经常执行此查询,那么您可能需要考虑在Table2
此连接中添加一个新列,即SNumber
. 这样做的原因是,当条件涉及函数时,连接可能会非常昂贵。而且,在这种情况下通常也不能使用索引。
推荐阅读
- c# - 反序列化动态 JSON 对象
- json - 带有选择性键的 Pandas 深度嵌套 json:列的值
- csv - 将 RingCentral 通话记录导出为 CSV 的方法
- javascript - 无法从输入反应js中的搜索中删除第一个字符
- ios - 我的应用程序声音输出的音频过滤器
- google-colaboratory - 在 google colab 上高效存储大型数据集
- java - 将调试器附加到 neo4j 程序 jar
- tensorflow - Tensorflow 分类的问题 - 损失没有减少
- python - SQLAlchemy - 如何否定任何表达式
- reactjs - react-router V5 在导航时保留查询参数