文档章节

MySql中常见的三种业务子查询

应木无声
 应木无声
发布于 2017/07/12 22:56
字数 555
阅读 4
收藏 1

在实际开发中,我们会遇到如下几种情况:

  1. 查询数据库表中某些字段值相等的记录
  2. 删除数据库表中某些字段值相等的记录,不做保留
  3. 删除数据库表中某些字段值相等的记录,保留最新的一条记录

下面看一个数据库表

 

第一种情况:老板说把工资相等的部门查出来

首先我们先根据工资相等这个条件筛选出那几个工资相等

select salary from test GROUP BY salary having COUNT(salary)>1

查出工资为6500的不止一个部门,根据这个6500作为条件,查出该条记录

select * from test where salary  in (select salary from test GROUP BY salary having COUNT(salary)>1)

 

第二种情况:老板说把工资相等的都删了

首先我们先根据工资相等这个条件筛选出那几个工资相等

select salary from test group by salary HAVING count(salary)>1

根据工资相等这个条件,删除所有记录

create table temp as select salary from test group by salary HAVING count(salary)>1
delete from test WHERE salary  in(select salary from temp2);
drop table temp

由于在mysql中不支持一条语句动态更新一个表的记录,所以我们创建一个临时表来保存删除的条件,实际开发中,考虑到效率问题,提倡建立第三张中间表来操作

 

第三张情况:老板说把部门信息重复的记录删除了,保存最近一次的更新记录

首先我们查找出部门相等的值和最早一次插入的值

select dept,min(id) as 'minId' from test group by dept HAVING COUNT(dept)>1

我们商务和测试都是重复记录存在的,保留最近一次插入的记录,由于我们的ID是自动增长的,这里得到的是最早插入的,所以我们在部门相等的情况下删除最小的id即可

create table temp as select dept,min(id) as 'minId' from test group by dept HAVING COUNT(dept)>1 
DELETE from test where id  in (select minId from temp)

DROP table temp

这样,上面三种常遇见的三种操作都实现了

 

 

© 著作权归作者所有

应木无声
粉丝 0
博文 27
码字总数 13841
作品 0
广州
私信 提问
分库主键设计-Mysql

常见的两种方案,遍布网络: 第一种: replace方案,mysql解释:REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的...

伊人梦醉
2016/06/20
27
0
浅谈 MySQL 子查询及其优化

使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mys...

大数据之路
2014/07/09
1K
1
MySQL——通过EXPLAIN分析SQL的执行计划

在MySQL中,我们可以通过EXPLAIN命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。 下面分别对EXPLAIN命令结果的每一列进行说明: select_type:...

撸码那些事
2018/08/03
0
0
mysql使用索引提高查询效率

mysql单表中数据量到达一定数量后,查询效率会变得很低,使用索引可以有效地提高mysql的查询效率.但是索引使用不当,会使索引失效,起不到提升效率的作用,在实际项目中,要做好索引的优化,合理的使...

紫葡萄0
2018/10/25
0
0
Mysql并发时经典常见的死锁原因及解决方法

Mysql并发时经典常见的死锁原因及解决方法 1. mysql都有什么锁 MySQL有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最...

rshare
2017/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
4
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0
重读《学习JavaScript数据结构与算法-第三版》- 第5章 队列

定场诗 马瘦毛长蹄子肥,儿子偷爹不算贼,瞎大爷娶个瞎大奶奶,老两口过了多半辈,谁也没看见谁! 前言 本章为重读《学习JavaScript数据结构与算法-第三版》的系列文章,主要讲述队列数据结...

胡哥有话说
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部