您知道如何在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
显然,上面的例子是一个简单的例子。我需要执行此操作的查询非常复杂,因此为每个条件重写每个返回的列定义将非常麻烦。
所以无论如何,这是什么语法?有可能吗?
答案 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;