您知道如何将临时列名分配给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显然,上面的例子是一个微不足道的例子。我需要对其执行此操作的查询非常复杂,因此为每个条件重写每个返回的列定义将是相当麻烦的。
那么,它的语法是什么呢?有可能吗?
发布于 2010-06-20 13:28:45
使用派生表...
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发布于 2010-06-20 13:23:20
我不认为这是可能的,但您可以通过将数据放入一个临时表中,然后运行第二个查询来运行其余部分来作弊。
或者动态SQL,但我不喜欢后者。
发布于 2014-09-25 16:31:16
从mytable中选择something+this+that作为myvalue,其中myvalue = 10
你可以试着这样做:
SELECT something+this+that AS myvalue
FROM `users`
HAVING myvalue=10;https://stackoverflow.com/questions/3078308
复制相似问题