从 Select 按表达式排序

Ordering by expression from Select

我需要这样查询:

SELECT (t.a-t.b) AS 'difference'
FROM t
ORDER BY abs(t.a-t.b)

有没有办法不重复代码(t.a-t.b)?谢谢你的回答

您可以包装 SQL 语句,然后执行 ORDER BY(如果要对其执行绝对值)。

SELECT * FROM
(
   SELECT (t.a-t.b) AS "difference"
   FROM t
) a
ORDER BY abs(a.difference)

更新:我第一次使用 SQL 服务器,但根据您的环境(Oracle,MySQL),您可能需要在列别名周围包含双引号,因此:

SELECT * FROM
(
   SELECT (t.a-t.b) AS "difference"
   FROM t
) a
ORDER BY abs("a.difference")