Every derived table must have its own alias
A derived table is an expression that generates a table within the
scope of a query FROM clause. For example, a subquery in a SELECT
statement FROM clause is a derived table:
SELECT ... FROM (subquery) [AS] tbl_name ...
The [AS] tbl_name clause is mandatory because every table in a FROM clause must have a name. Any columns in the derived table must have unique names.
mysql from内部subquery,也称作派生查询,必须要设置tbl_name的。
因为FROM子句中的每个表都必须具有名称。
//错误 Every derived table must have its own alias
select * from (select * from user where age >=2 )
//正确
select * from (select * from user where age >=2 ) as u
select * from (select * from user where age >=2 ) u
还需要注意的是:派生表中的任何列都必须具有唯一的名称。
//错误 Duplicate column name 'id'
select * from (select user.id as id , user.name as id from user where age >=2 ) as a
//正确
select * from (select user.id as id , user.name as name from user where age >=2 ) as a
详细参考:mysql derived tables
还没有评论,来说两句吧...