1.mysql查出数据表中连续出现三次或三次以上的数据

建一张表如下:表名为 number

1.1 要求找出num列连续出现三次或三次以上的数据:

select * from number where id in (
select distinct n1.id from number n1,number n2,number n3
where (n1.num = n2.num and n2.num = n3.num and (
(n1.id + 1= n2.id and n2.id +1 = n3.id)or
(n3.id + 1= n2.id and n2.id +1 = n1.id)or
(n3.id + 1= n1.id and n1.id +1 = n2.id)
)
)
order by n1.id )

运行结果:

1.2找出上表(运行结果表)中重复数据中id最小的数据。

思想:将上表中的数据分组取最小。

select min(id) as minid,id,num
from ((select * from number where id in (
select distinct n1.id from number n1,number n2,number n3
where (n1.num = n2.num and n2.num = n3.num and (
(n1.id + 1= n2.id and n2.id +1 = n3.id)or
(n3.id + 1= n2.id and n2.id +1 = n1.id)or
(n3.id + 1= n1.id and n1.id +1 = n2.id)
)
)
order by n1.id ))as t) group by num ;

运行结果:

2.删除表中的重复数据,保留id最小的数据

原表中的数据如下:

/*
方法一:
1.创建临时表
2.将需要的数据保存到临时表
3.清空原表,将临时表中的数据保存到原表中
4.删除临时表
*/
create temporary table temp select min(id),email from test group by email; truncate table test; insert into test select * from temp; select * from test; drop table temp; /*
方法二:
1.按照邮件分组,把每一组中的最小的id取出放在临时表中 2.删除原表中除临时表中id以外的其他id 对应的数据
*/ create temporary table temp select min(id) as minid from test group by email; delete from test where id not in (select minid from temp); drop table temp; /*
方法三:
在原表上操作
*/
delete from test where id not in (
select minid from (
select min(id) minid from test group by email
)b
);
select * from test;

运行结果:

3.mysql中的各种连接

创建两张表,代表两个店铺,每个店铺有不同的,每个柜台卖不同的商品。

/*
两个商店,每个店有不同的柜台,每个柜台上卖有不同的商品
*/
create table tableA(
id int(10) not null primary key auto_increment,
monorail varchar(20),
variety varchar(50)
);
insert into tableA
values (1,'a1','苹果'),(2,'a1','梨'),(3,'a3','香蕉'),(4,'a4','苹果'),(5,'a5','西瓜'),
(6,'a6','苹果'),(7,'a7','葡萄'),(8,'a8','桃子');
create table tableB(
id int(10) not null primary key auto_increment,
monorail varchar(20),
variety varchar(50)
);
insert into tableB
values (1,'b1','虾'),(2,'b2','猪肉'),(3,'b3','苹果'),(4,'b4','西瓜'),(5,'b5','梨'),
(6,'b6','香蕉');

两个表数据如下:

3.1.内连接

/*
内连接,查处两个商店共有的商品
*/
select * from tablea A INNER JOIN tableb B
on A.variety = B.variety ;

运行结果

3.2.左连接

/*
左连接,以A表为左表
*/
select * from tablea A LEFT JOIN tableb B
on A.variety = B.variety ;

运行结果

3.3.右连接

/*
右连接,以A表为左表
*/
select * from tablea A RIGHT JOIN tableb B
on A.variety = B.variety ;

运行结果

3.4.左外连接

/*
左外连接,以A表为左表
*/
select * from tablea A LEFT JOIN tableb B
on A.variety = B.variety Where B.variety is null;

运行结果

3.5.右外连接

/*
右外连接,以A表为左表
*/
select * from tablea A RIGHT JOIN tableb B
on A.variety = B.variety Where A.variety is null;

运行结果

3.6.全连接 

mysql不支持full  (outer) join 故使用union代替

/*
全连接
*/
select * from tablea A LEFT JOIN tableb B
on A.variety = B.variety ;
union
select * from tablea A RIGHT JOIN tableb B
on A.variety = B.variety ;

运行结果

3.7.全外连接

select * from tablea A LEFT  JOIN tableb B
on A.variety = B.variety Where B.variety is null
union
select * from tablea A RIGHT JOIN tableb B
on A.variety = B.variety Where A.variety is null

运行结果

mysql中各种复杂的增删改查的更多相关文章

  1. 用CI框架向数据库中实现简单的增删改查

    以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html Code ...

  2. MySQL数据库之表的增删改查

    目录 MySQL数据库之表的增删改查 1 引言 2 创建表 3 删除表 4 修改表 5 查看表 6 复制表 MySQL数据库之表的增删改查 1 引言 1.MySQL数据库中,数据库database就是 ...

  3. MYSQL - database 以及 table 的增删改查

    MYSQL - database 以及 table 的增删改查 MySQL的相关概念介绍 MySQL 为关系型数据库(Relational Database Management System), 这 ...

  4. 使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理

    一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的 ...

  5. 在ASP.NET MVC4中实现同页面增删改查,无弹出框02,增删改查界面设计

    在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今 ...

  6. 在python中连接mysql数据库,并进行增删改查

    数据库在开发过程中是最常见的,基本上在服务端的编程过程中都会使用到,mysql是较常见的一种数据库,这里介绍python如果连接到数据库中,并对数据库进行增删改查. 安装mysql的python扩展 ...

  7. MYSQL的常用命令和增删改查语句和数据类型

    连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...

  8. MYSQL的常用命令和增删改查语句和数据类型【转】

    连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...

  9. nodejs+express+mysql实现restful风格的增删改查示例

    首先,放上项目github地址:https://github.com/codethereforam/express-mysql-demo 一.前言 之前学的java,一直用的ssm框架写后台.前段时间 ...

随机推荐

  1. JAVA DateUtil 工具类封装(转)

    原文链接 https://blog.csdn.net/wangpeng047/article/details/8295623  作者三次整理后的代码 下载链接   https://www.lanzou ...

  2. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-remove

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  3. (五)微信小程序的跳转

    我们在微信页面往往有点击一个图片就可以跳转的情况,接下来我们就学习一下这个功能 一  js版本--bindtap 实现跳转 1. 首先我们先写一个跳转的按钮(在index.wxml) <view ...

  4. Window Server 2019 配置篇(5)- 在域中建立WSUS以实现自动更新

    上次讲到我们的服务器群中增加了一台用于自动部署的服务器,这次我们要添加一台搭载WSUS服务的服务器,以实现对window更新的管理 那么WSUS是什么服务呢? WSUS是window server u ...

  5. Asp.net禁用site.Mobile.Master

    RT,在asp.net新的项目中遇到的一个问题.项目使用了Boostrap后网页打开是正常的,但是换成移动端打开这个网页的时候就奇怪了.很多样式不见了.原来是自动切换到了site.Mobile.Mas ...

  6. 2的n次幂

    位运算判断2的n次幂: 举个栗子,n = 8:则二进制表示就为1000,n-1则为 0111 取&刚好等于0 嘿嘿,巧妙吧. 再举个栗子,n = 7: 则二进制为 0111,n-1则为0110 ...

  7. IO流常用模式

    主要运用2个设计模式,适配器和装饰者模式.

  8. dedecms调用当前栏目的子栏目及子栏目文章

    {dede:channelartlist}   <ul>     {dede:arclist titlelen='60' row='8'}       <img src=" ...

  9. OI生涯回顾

    OI回忆录只是一个预告,估计等2020高考结束才放出来吧. 先写一下自己简单的OI历程吧: 小升初刚起步 初一 第一次比赛,NOIP PJ组215分,踩线1=,全省rk86,全国rk677(毕竟AH ...

  10. python csv

    Python 读取csv的某行 Python 读取csv的某列 Python写了一个可以提取csv任一列的代码,欢迎使用.Github链接 两个list写入csv文件 column1,column2 ...