SQL

您所在的位置:网站首页 sql的星号 SQL

SQL

2023-07-10 15:25| 来源: 网络整理| 查看: 265

题目

表: Person

编写一个 SQL 查询来报告所有重复的电子邮件。 请注意,可以保证电子邮件字段不为 NULL。

以 任意顺序 返回结果表。

查询结果格式如下例。

示例 1:

解题思路 前置知识

count()

1.count(*) :统计所有的行数,包括为null的行(COUNT(*)不单会进行全表扫描,也会对表的每个字段进行扫描。而COUNT('x')或者COUNT(COLUMN)或者COUNT(0)等则只进行一个字段的全表扫描)。

2.count(1):计算一共有多少符合条件的行,不会忽略null值(其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1..同理,count(2),也可以,得到的值完全一样,count('x'),count('y')都是可以的。count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。)

3.count(列名):查询列名那一列的,字段为null不统计(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。

HAVING COUNT() 是 SQL 中用于筛选分组结果的关键字,它通常与 GROUP BY 一起使用。HAVING COUNT() 的作用是对分组后的结果进行过滤,只保留满足条件的分组结果。

有了上述知识我们来解决一下这个问题

1.题目要求我们查询 所有重复的电子邮件 ,首先我们要用 group by 对 email 的值进行分组

2.分好组后 我们用 count( ) 函数计算 分组后结果大于1的 email。

代码实现 select email from Person group by email having count(email)>1 测试结果

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3