Select 来自视图的聚合/计算列

Select an aggregate / computed column from a view

我创建了一个 SQL 视图,总结了另一个 table 中的 amt 列:

create view blackjack_balance as 
select user_id, sum(amt) 
from blackjack_balance_change 
group by user_id;

这按预期工作:

mysql> select * from blackjack_balance;
+---------+----------+
| user_id | sum(amt) |
+---------+----------+
|      73 |        2 |
|      74 |       -2 |
+---------+----------+

但是我如何 select 只有 sum(amt) 列?这不起作用:

mysql> select sum(amt) from blackjack_balance;
ERROR 1054 (42S22): Unknown column 'amt' in 'field list'

这是有道理的,因为视图中没有 amt 列,而且这似乎也不起作用:

mysql> select "sum(amt)" from blackjack_balance;
+----------+
| sum(amt) |
+----------+
| sum(amt) |
| sum(amt) |
+----------+

这样做的正确语法是什么?期望的输出:

+----------+
| sum(amt) |
+----------+
|       -2 |
|        2 |
+----------+

你应该给这个专栏起一个合适的名字。像这样

... select user_id, sum(amt) as amt_sum from ...

那么你可以select那个

select amt_sum from blackjack_balance

顺便说一句 MySQL 使用反引号转义 "special" 列或 table 名称。

select `sum(amt)` ...