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)` ...
我创建了一个 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)` ...