2010-06-20 68 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; 
相关问题