MYSQL之进阶实战笔试题

Posted 奈奈八尾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL之进阶实战笔试题相关的知识,希望对你有一定的参考价值。

现有一表user_login_table代表表名

user_name代表用户ID

date代表用户登录时间

其结构数据如下:


例题5.删除重复值user_name并保留重复值中最小的date


思路:建立储存重复数据的临时表,通过exists查询删掉其他数据保留最小日期

具体步骤和代码如下:

第一步,建立临时表

create temporary table table2 (user_name int not null, date_min date not null);

第二步,在临时表中插入重复且date最小的数据

insert into table2  

(user_name,date_min)

select user_name,

min(date)

from table1

group by user_name

having count(1)>=2;

第三步,删除在临时表中的ID但保留date最小的行

delete from table1

where exists 

                     (select * 

                    from table2

                     where table2.user_name=table1.user_name 

                     and date(table1.date)!=table2.date_min);



例题6:查找表table 中列a或列b中重复的数据


思路一:单独查找某一列重复值通过union做连接

具体代码如下:

select  a ,"a列重复值"  as   aa   from table group by a having count(1)>2

union

select b,"b列重复值"  as  bb   from table group by b havign count(1)>2


思路二:通过where 嵌套子查询

具体代码如下

select   a,b from table 

where a in (select a from table group by a having count(1)>2)

or b in (select b from table group by b having count(1)>2);


以上是关于MYSQL之进阶实战笔试题的主要内容,如果未能解决你的问题,请参考以下文章

指针进阶—指针和数组笔试题解析[建议收藏]

mysql数据库笔试题,阿里一线架构师分享的技术图谱,进阶加薪全靠它

大厂指针笔试题(1码+1图)详解——程序结果判断题

C语言进阶刷题笔记strlen和sizeof经典笔试题

C语言进阶刷题笔记strlen和sizeof经典笔试题

C语言进阶刷题笔记strlen和sizeof经典笔试题