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;

posted @ 2021-03-17 10:35  赵Gary  阅读(169)  评论(0)    收藏  举报