如何在MYSQL查询中的另一个计算中立即使用计算结果

时间:2011-09-12 05:33:12

标签: php mysql select

所以我有这个问题:

SELECT SUM(x) AS s, s + 600 AS y FROM table;

但是后来mysql抱怨了...未知列''在'字段列表'中我认为它来自s + 600表达式....

如何格式化查询,以便我可以立即在紧随其后的计算中使用SUM(x)计算别名's'?

3 个答案:

答案 0 :(得分:2)

SELECT SUM(x) AS s, SUM(x) + 600 AS y FROM table;

您无法在选择列表中重复使用别名;它不像编程语言中的“变量声明”。

SQL语句按以下顺序执行:

  1. FROM(加入源表)
  2. WHERE(过滤结果集)
  3. GROUP BY(组数据)
  4. HAVING(过滤结果组)
  5. SELECT(选择/计算结果列)
  6. ORDER BY(排序数据)
  7. 这意味着你可以在ORDER BY中使用SELECT中的别名,而不是其他地方。

答案 1 :(得分:2)

SELECT s, s + 600 AS y FROM (SELECT SUM(x) AS s FROM table);

答案 2 :(得分:0)

为什么在MySQL中生成第二列?只需在PHP中创建第二部分;这样,您可以在共享资源(数据库服务器)上花费更少的时间,并将剩余的时间转移到通常可扩展的资源(您的Web服务器)。

$row = mysql_fetch_assoc($result_id);
$row['y'] = $row['s'] + 600;

我真正希望创建第二列的唯一真正原因是,如果此查询是较大查询中的子表达式的一部分(例如,您正在为另一个查询或某些查询生成边界)。