下列行为是违法的。
SELECT
schema_id + 2 AS evil_column
FROM
sys.tables
ORDER BY
evil_column + 3;
如果删除+ 3
,那么它是合法的。
假设我想对结果进行算术运算evil_column
,ORDER BY
但不想在evil_column
任何地方重复定义,我有什么选择?
下列行为是违法的。
SELECT
schema_id + 2 AS evil_column
FROM
sys.tables
ORDER BY
evil_column + 3;
如果删除+ 3
,那么它是合法的。
假设我想对结果进行算术运算evil_column
,ORDER BY
但不想在evil_column
任何地方重复定义,我有什么选择?
不,不是直接
但你总是可以使用 CTE 作为步骤
您可以使用多个
CROSS APPLY
相互馈送的列来添加“虚拟”列。