考察知识点:
- SQL 的书写规则是什么?
- 如何指定查询条件?
- SQL 是如何运行的?
一、知识点:
1.COUNT() 函数 计算表的行数。
返回指定列的值的数目
SELECT COUNT(column_name) FROM table_name
返回表中的记录数
SELECT COUNT(*) FROM table_name
返回指定列的不同值的数目
SELECT COUNT(DISTINCT column_name) FROM table_name
2.Sql的运行顺序?
一、sql执行顺序
- from
- where
- group by(开始使用select中的别名,后面的语句中都可以使用)
- avg,sum…
- having
- select
- distinct
- order by
题目:编写一个SQL查询,查找学生表中所有重复的学生名。
解题思路1:
1.通过group by给姓名分组,通过count函数给分组后的姓名进行计数
(将此查询命为辅助表)
2.通过where过滤辅助表中大于1的姓名分组即可查询到重复的姓名。
select 姓名 from
(
select 姓名,count(姓名) as 计数
from 学生表
group by 姓名
) as 辅助表
where 计数 > 1;
解题思路2:
错误思路:
select 姓名
from 学生表
group by 姓名
where count(姓名) > 1;
原因:where字句无法与聚合函数一起使用。
因为where子句的运行顺序排在第二,运行到where时,表还没有被分组。
正确思路:
select 姓名
from 学生表
group by 姓名
having count(姓名) > 1;
总结
找出重复出现n次的数据。只需要改变having语句中的条件即可:
select 列名
from 表名
group by 列名
having count(列名) > n;