所以我有这个问题:
SELECT SUM(x) AS s, s + 600 AS y FROM table;
但是后来mysql抱怨了...未知列''在'字段列表'中我认为它来自s + 600表达式....
如何格式化查询,以便我可以立即在紧随其后的计算中使用SUM(x)计算别名's'?
答案 0 :(得分:2)
SELECT SUM(x) AS s, SUM(x) + 600 AS y FROM table;
您无法在选择列表中重复使用别名;它不像编程语言中的“变量声明”。
SQL语句按以下顺序执行:
这意味着你可以在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;
我真正希望创建第二列的唯一真正原因是,如果此查询是较大查询中的子表达式的一部分(例如,您正在为另一个查询或某些查询生成边界)。