选择AS temp_name FROM表WHERE temp_name = something?

时间:2010-06-20 05:21:13

标签: mysql

您知道如何在SQL语句中为这样的返回值分配临时列名吗?

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

显然,上面的例子是一个简单的例子。我需要执行此操作的查询非常复杂,因此为每个条件重写每个返回的列定义将非常麻烦。

所以无论如何,这是什么语法?有可能吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我认为这不可能,但你可能会把数据放入一个临时表中,然后运行第二个查询来运行其余的数据。

那,或动态SQL,但我不是后者的粉丝。

答案 2 :(得分:-1)

  

选择一些东西+这个+ AS myvalue FROM mytable WHERE myvalue = 10

你可以尝试类似的东西:

SELECT something+this+that AS myvalue
FROM  `users` 
HAVING myvalue=10;