在SQL计算中使用别名
为什么不能使用这个查询?
SELECT 10 AS my_num, my_num*5 AS another_number FROM table 在这个例子中,我试图在其他计算中使用my_num别名。 这导致未知列“my_num”
这是我正在尝试做的简化版本,但基本上我想用别名来进行其他计算。 我的计算要复杂得多,所以为什么要用别的方法重复几次就可以了。
 简单地用(SELECT alias)包装重用的别名: 
 SELECT 10 AS my_num, (SELECT my_num) * 5 AS another_number FROM table 
您将需要使用子查询以这种方式使用别名
 SELECT my_num*5 AS another_number FROM ( SELECT 10 AS my_num FROM table ) x 
  sql中的别名不像编程语言中的variables。 别名只能在某些点再次引用(特别是在GROUP BY和HAVING子句中)。 但是你不能在SELECT子句中重用别名。 所以你可以使用派生查询(比如Rubens Fariasbuild议的),它可以让你基本上重命名你的列和/或命名任何计算列。 
 或者如果你的公式一般是固定的,你可以使用VIEW 
 CREATE VIEW table10 AS SELECT 10 AS my_num FROM table; SELECT my_num * 5 AS another_number FROM table10; 
我相信这将比使用派生查询稍快,但它可能取决于您真正的查询。
或者你可以复制工作:
 SELECT 10 AS my_num, 10 * 5 AS another_number FROM table; 
在php / perl之类的东西中可能会很方便:
 my $my_num = 10; my $query = "SELECT $my_num AS my_num, $my_num * 5 AS another_number FROM table"; 
“ 另一种select是使用APPLY运算符
 SELECT my_num, my_num*5 AS another_number FROM table CROSS APPLY (SELECT 5 AS my_num) X