在 WHERE 子句中使用列别名
Use column alias in WHERE clause
我的查询中有一个函数使用 table 中的一列,并为该输入生成一个唯一的数字。
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t
我也想加入另一个已经有唯一编号的 table。
SELECT o.[SameUniqueValueAsGeneratedByTheFunctioninTable1] AS Col2
FROM Table2 o
我不确定这是否可行,但我想引用函数结果以等于 Table2 中的列以成功连接:比如说,
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t
LEFT JOIN Table2 o
ON Col1 = o.[SameUniqueValueAsGeneratedByTheFunctioninTable1]
感谢任何澄清,帮助。
许多数据库都支持横向连接。我猜您正在使用 SQL 服务器,它支持这些使用 APPLY
。这允许您将列定义移动到 FROM
子句:
SELECT . . .
FROM Table1 t CROSS APPLY
(VALUES (FunctionResultsinUniqueNumber(t.[table1Column]))
) v(col1) JOIN
Table2 t2
ON v.Col1 = t2.SameUniqueValueAsGeneratedByTheFunctioninTable1;
否则,您将使用子查询:
SELECT . . .
FROM (SELECT t.*,
FunctionResultsinUniqueNumber(t.[table1Column] as col1
FROM t
) t JOIN
Table2 t2
ON t.Col1 = t2.SameUniqueValueAsGeneratedByTheFunctioninTable1;
你需要用ON
子句再次调用它:
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t LEFT JOIN
Table2 o
ON FunctionResultsinUniqueNumber(t.[table1Column]) =
o.[SameUniqueValueAsGeneratedByTheFunctioninTable1];
你也可以使用子查询:
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM (SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t
) t LEFT JOIN
Table2 t2
ON t.Col1 = t2.SameUniqueValueAsGeneratedByTheFunctioninTable1;
我的查询中有一个函数使用 table 中的一列,并为该输入生成一个唯一的数字。
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t
我也想加入另一个已经有唯一编号的 table。
SELECT o.[SameUniqueValueAsGeneratedByTheFunctioninTable1] AS Col2
FROM Table2 o
我不确定这是否可行,但我想引用函数结果以等于 Table2 中的列以成功连接:比如说,
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t
LEFT JOIN Table2 o
ON Col1 = o.[SameUniqueValueAsGeneratedByTheFunctioninTable1]
感谢任何澄清,帮助。
许多数据库都支持横向连接。我猜您正在使用 SQL 服务器,它支持这些使用 APPLY
。这允许您将列定义移动到 FROM
子句:
SELECT . . .
FROM Table1 t CROSS APPLY
(VALUES (FunctionResultsinUniqueNumber(t.[table1Column]))
) v(col1) JOIN
Table2 t2
ON v.Col1 = t2.SameUniqueValueAsGeneratedByTheFunctioninTable1;
否则,您将使用子查询:
SELECT . . .
FROM (SELECT t.*,
FunctionResultsinUniqueNumber(t.[table1Column] as col1
FROM t
) t JOIN
Table2 t2
ON t.Col1 = t2.SameUniqueValueAsGeneratedByTheFunctioninTable1;
你需要用ON
子句再次调用它:
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t LEFT JOIN
Table2 o
ON FunctionResultsinUniqueNumber(t.[table1Column]) =
o.[SameUniqueValueAsGeneratedByTheFunctioninTable1];
你也可以使用子查询:
SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM (SELECT FunctionResultsinUniqueNumber(t.[table1Column]) AS Col1
FROM Table1 t
) t LEFT JOIN
Table2 t2
ON t.Col1 = t2.SameUniqueValueAsGeneratedByTheFunctioninTable1;