我在MySQL上运行此查询 spa
SELECT ID FROM ( SELECT ID, msisdn FROM ( SELECT * FROM TT2 ) );
它给出了这个错误: code
每一个派生表必须具备本身的别名。 it
是什么致使此错误? table
这是一个不一样的例子,没有别名就不能重写(不能GROUP BY DISTINCT
)。 软件
想象一下一个称为purchases
的表,该表记录了customers
在stores
进行的购买,即,这是一个多对多表,而且软件须要知道哪些顾客在多个商店中进行了购买: 引用
SELECT DISTINCT customer_id, SUM(1) FROM ( SELECT DISTINCT customer_id, store_id FROM purchases) GROUP BY customer_id HAVING 1 < SUM(1);
..将因错误而中断Every derived table must have its own alias
。 修理: 查询
SELECT DISTINCT customer_id, SUM(1) FROM ( SELECT DISTINCT customer_id, store_id FROM purchases) AS custom GROUP BY customer_id HAVING 1 < SUM(1);
(注意AS custom
别名)。 tab
我认为这是在要求您这样作: co
SELECT ID FROM (SELECT ID, msisdn FROM (SELECT * FROM TT2) as myalias ) as anotheralias;
可是,为何首先要编写此查询? block
每一个派生表(AKA子查询)确实必须有一个别名。 也就是说,括号中的每一个查询都必须被赋予一个别名( AS whatever
),能够在外部查询的其他部分中使用它来引用它。
SELECT ID FROM ( SELECT ID, msisdn FROM ( SELECT * FROM TT2 ) AS T ) AS T
固然,对于您而言,整个查询能够替换为:
SELECT ID FROM TT2