按Select中的表达式排序

时间:2015-07-21 16:17:46

标签: sql sybase

我需要进行这样的查询:

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

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

1 个答案:

答案 0 :(得分:2)

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

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

更新:我第一次使用SQL Server,但根据你的环境(Oracle,MySQL),你可能需要在列别名周围加上双引号,所以:

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