在视图中使用带有 SQL 函数的连接
Using a join with SQL function in view
这对你们中的一些人来说可能是一个非常基础的问题,但是请新手耐心学习SQL服务器。
我需要创建一个视图,我试图在其中连接来自两个 table 的多个列。唯一的问题是,其中一列的值包含额外的字符,需要使用 RIGHT 函数或 SUBSTRING 将其删除,以便它能够匹配另一列 table 中的相应列。
这是我写的,但我需要帮助解决我在 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
中为此连接添加一个新列,即 [ 的前六个字符=13=]。这样做的原因是,当条件涉及函数时,连接的成本可能非常高。而且,这种情况下一般也不能使用索引。
这对你们中的一些人来说可能是一个非常基础的问题,但是请新手耐心学习SQL服务器。
我需要创建一个视图,我试图在其中连接来自两个 table 的多个列。唯一的问题是,其中一列的值包含额外的字符,需要使用 RIGHT 函数或 SUBSTRING 将其删除,以便它能够匹配另一列 table 中的相应列。
这是我写的,但我需要帮助解决我在 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
中为此连接添加一个新列,即 [ 的前六个字符=13=]。这样做的原因是,当条件涉及函数时,连接的成本可能非常高。而且,这种情况下一般也不能使用索引。