2015-07-21 65 views
1

我需要這樣的查詢:排序方式表達從選擇

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

有沒有辦法不重複的代碼(T.A-t.b)?謝謝您的回答

回答

2

你可以用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") 
+0

如果您想要閱讀更多關於它的信息,這是一個非常類似的帖子。 http://stackoverflow.com/questions/11182339/reference-alias-calculated-in-select-in-where-clause –

+0

請參閱我的評論#1的答案:它說:「無效的列名:差」 – awfun

+0

Works的我,但嘗試用'a'填充列,所以'abs(a.difference)'。 – larsenmc