美文网首页
SQL每日一题(2020-05-22)

SQL每日一题(2020-05-22)

作者: 扎西的德勒 | 来源:发表于2020-06-02 19:55 被阅读0次

题目:

题目
编写一个 SQL 查询,来删除Customers表中所有重复的电话号码,重复的电话号码只保留 Id 最小 的那个。

image Id 是这个表的主键。例如,在运行你的查询语句之后,上面的Customers表应返回以下几行: image

请至少使用两种方法解答

参考答案:

数据库版本:Server version: 8.0.20 MySQL Community Server - GPL

建表语句

create table dailytest_20200522
(
    id    int,
    phone bigint
);

数据准备

insert into dailytest_20200522 values(1,13512345678);
insert into dailytest_20200522 values(2,13512345678);
insert into dailytest_20200522 values(3,15012345678);

方法1

delete
from dailytest_20200522
where id in (
    select A.id
    from (
             select id, phone, row_number() over (partition by phone order by id ) as cn from dailytest_20200522) A
    where A.cn <> 1);

方法2

#通过创建临时表,写入去重后数据,再插入原表
create temporary table dailytest_20200522_temp as select * from dailytest_20200522 where 1=2;

insert into dailytest_20200522_temp select A.id,A.phone
    from (
             select id, phone, row_number() over (partition by phone order by id ) as cn from dailytest_20200522) A
    where A.cn = 1;

truncate table dailytest_20200522;

insert into dailytest_20200522 select * from dailytest_20200522_temp;

drop temporary table dailytest_20200522_temp;

附:
题目来源:https://mp.weixin.qq.com/s/kGWBuFihl3hOk91SiGATKw

相关文章

  • SQL每日一题(2020-05-22)

    题目: 题目编写一个 SQL 查询,来删除Customers表中所有重复的电话号码,重复的电话号码只保留 Id 最...

  • SQL每日一题(20200819)

    题目 有一个商场,每日人流量信息被记录在这三列信息中:序号(id)、日期(date)、人流量(people)。请编...

  • SQL每日一题(20200817)

    题目 有如下一张表T 列AID和BID是一对多的关系,希望将BID中同时存在3和5的AID找出来,预计的结果如下:...

  • Day 4 Project 我的微信好友

    附:每日一题

  • 2020-05-23

    2020-05-22 2020-05-22 成长日志第337天 家名:温暖有爱之家 家规:真诚待人不自欺,学会看见...

  • 经典Hive SQL面试题

    第一题 需求 实现 数据准备 查询SQL 第二题 需求 实现 数据准备 查询SQL实现 第三题 需求 实现 数据准...

  • SQL每日一题(2020-07-02)

    题目: 你能写一个 SQL 查询语句,找到只出现过一次的数字中,最大的一个数字吗?下面是测试数据 对于上面给出的样...

  • SQL每日一题(2020-07-01) ***

    题目: 订单中有多个商品,想要查询订单表(Orders)中同时包含有商品A、商品B、商品C等的所有订单信息。 希望...

  • SQL每日一题(2020-06-30)

    题目: 在 微信 或者 QQ这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。 表 request...

  • SQL每日一题(2020-06-09)

    题目: 从一张考勤表TAB中找出员工每天的上班,下班打卡的具体时间? 考勤表中相关字段如下:ID,NAME,NO,...

网友评论

      本文标题:SQL每日一题(2020-05-22)

      本文链接:https://www.haomeiwen.com/subject/rcupzhtx.html