MySQL中Every derived table must have its own alias(每个派生出来的表都必须有一个自己的别名)的问题的解决
编写一段MySQL语句,目的是为了查找学生表中重复的学生名,语句如下:
select 姓名
from
(
select 姓名,count(姓名) as 计数
from student
group by 姓名
)
where 计数>1;
编译结果报错:
1248 - Every derived table must have its own alias(每个派生出来的表都必须有一个自己的别名)
把MySQL语句改成:
select 姓名
from
(
select 姓名,count(姓名) as 计数
from student
group by 姓名
) as t
where 计数>1;
子查询的结果必须有一个别名。
这个MySQL换一种写法,会报错:
select 姓名
from student
group by 姓名
where count(姓名)>1;
原因是where子句和聚合函数无法一起使用。
如果要对分组查询的结果进行筛选,可以使用having子句:
select 姓名
from student
group by 姓名
having count(姓名)>1;