【发布时间】:2015-06-29 07:41:27
【问题描述】:
我有一张这样的桌子
我要选择Acct_id, 已完成最大交易次数的用户的交易次数。
select Acct_id,max(num) From (select Acct_id, count(Acct_id) as num from Transactions group by Acct_id);
我上面的 sql 查询给了我错误- 每个派生表都必须有自己的别名
为什么我的查询在没有别名的情况下会失败?
【问题讨论】:
我有一张这样的桌子
我要选择Acct_id, 已完成最大交易次数的用户的交易次数。
select Acct_id,max(num) From (select Acct_id, count(Acct_id) as num from Transactions group by Acct_id);
我上面的 sql 查询给了我错误- 每个派生表都必须有自己的别名
为什么我的查询在没有别名的情况下会失败?
【问题讨论】:
您的查询必须是:-
SELECT Acct_id, MAX(num)
FROM (SELECT Acct_id, COUNT(Acct_id) AS num
FROM Transactions
GROUP BY Acct_id) TAB;
【讨论】:
你需要给子选择一个别名:
SELECT ...
FROM (SELECT ...) AS anyAlias
GROUP BY ...;
【讨论】:
您的解决方案:
select Acct_id,max(num) From (select Acct_id, count(Acct_id) as num
from Transactions group by Acct_id) as alias;
另一种解决方案:
select count(*) as total from transactions
group by acct_id
order by total desc limit 0,1
【讨论】:
您的子选择表需要一个别名:
select
Acct_id,
max(num)
From (
select
Acct_id,
count(Acct_id) as num
from Transactions
group by Acct_id
) as temp;
【讨论】:
您的查询是正确的,但问题是不能像这样指定子查询表名
select Acct_id,max(num) From (select Acct_id, count(Acct_id) as num from Transactions group by Acct_id) a;
【讨论】: