选择AS temp_name FROM表WHERE temp_name = something?

Jak*_*son 5 mysql

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

SELECT something+this+that AS myvalue FROM mytable
Run Code Online (Sandbox Code Playgroud)

是否可以使用临时名称myvalue作为条件?

SELECT something+this+that AS myvalue FROM mytable WHERE myvalue = 10
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚这样做的语法.我可以弄清楚如何做到这一点的唯一方法是再次重写整个列定义,如下所示:

SELECT something+this+that AS myvalue FROM mytable WHERE something+this+that = 10
Run Code Online (Sandbox Code Playgroud)

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

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

gbn*_*gbn 7

使用派生表...

SELECT
    myvalue
FROM
    (
    SELECT something+this+that AS myvalue FROM mytable
    ) foo
WHERE
    myvalue = 10
Run Code Online (Sandbox Code Playgroud)

或者使用看起来更优雅但相同的CTE

;WITh myCTE AS
(
    SELECT something+this+that AS myvalue FROM mytable
)
SELECT
    myvalue
FROM
    myCTE
WHERE
    myvalue = 10
Run Code Online (Sandbox Code Playgroud)

或计算列,以便正常使用

ALTER TABLE MyTable ADD myvalue AS something+this+that
Run Code Online (Sandbox Code Playgroud)