2010-06-20 65 views
5

您知道如何在這樣的SQL語句中將臨時列名分配給返回值?選擇AS temp_name FROM table WHERE temp_name = something?

SELECT something+this+that AS myvalue FROM mytable 

是否可以使用臨時名稱myvalue作爲條件?

SELECT something+this+that AS myvalue FROM mytable WHERE myvalue = 10 

我似乎無法弄清楚這樣做的語法。我可以計算出如何做的唯一事情是這樣的,再次改寫了整列的定義是這樣的:

SELECT something+this+that AS myvalue FROM mytable WHERE something+this+that = 10 

顯然,上面的例子是一個簡單的例子。我需要這樣做的查詢是非常複雜的,因此重寫每個返回的列定義對於每個條件都是相當麻煩的。

因此無論如何,這是什麼語法?可能嗎?

+0

哪個版本? – 2010-06-20 05:42:54

回答

7

使用派生表...

SELECT 
    myvalue 
FROM 
    (
    SELECT something+this+that AS myvalue FROM mytable 
    ) foo 
WHERE 
    myvalue = 10 

或者使用CTE看起來更優雅,但同樣

;WITh myCTE AS 
(
    SELECT something+this+that AS myvalue FROM mytable 
) 
SELECT 
    myvalue 
FROM 
    myCTE 
WHERE 
    myvalue = 10 

或者計算列所以它的使用通常

ALTER TABLE MyTable ADD myvalue AS something+this+that 
0

我不認爲這是可能的,但你可以通過將數據放入一個臨時表中,然後運行第二個查詢來運行其餘的操作。

那還是動態SQL,但我不是後者的粉絲。

-1

SELECT something + this + that AS myvalue FROM mytable WHERE myvalu E = 10

你可以嘗試這樣的事情:SQL服務器的

SELECT something+this+that AS myvalue 
FROM `users` 
HAVING myvalue=10; 
相關問題