mysql中各种复杂的增删改查
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中各种复杂的增删改查的更多相关文章
- 用CI框架向数据库中实现简单的增删改查
以下代码基于CodeIgniter_2.1.3版 用PHP向数据库中实现简单的增删改查(纯代码)请戳 http://www.cnblogs.com/corvoh/p/4641476.html Code ...
- MySQL数据库之表的增删改查
目录 MySQL数据库之表的增删改查 1 引言 2 创建表 3 删除表 4 修改表 5 查看表 6 复制表 MySQL数据库之表的增删改查 1 引言 1.MySQL数据库中,数据库database就是 ...
- MYSQL - database 以及 table 的增删改查
MYSQL - database 以及 table 的增删改查 MySQL的相关概念介绍 MySQL 为关系型数据库(Relational Database Management System), 这 ...
- 使用JDBC分别利用Statement和PreparedStatement来对MySQL数据库进行简单的增删改查以及SQL注入的原理
一.MySQL数据库的下载及安装 https://www.mysql.com/ 点击DOWNLOADS,拉到页面底部,找到MySQL Community(GPL)Downloads,点击 选择下图中的 ...
- 在ASP.NET MVC4中实现同页面增删改查,无弹出框02,增删改查界面设计
在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今 ...
- 在python中连接mysql数据库,并进行增删改查
数据库在开发过程中是最常见的,基本上在服务端的编程过程中都会使用到,mysql是较常见的一种数据库,这里介绍python如果连接到数据库中,并对数据库进行增删改查. 安装mysql的python扩展 ...
- MYSQL的常用命令和增删改查语句和数据类型
连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...
- MYSQL的常用命令和增删改查语句和数据类型【转】
连接命令:<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库 ...
- nodejs+express+mysql实现restful风格的增删改查示例
首先,放上项目github地址:https://github.com/codethereforam/express-mysql-demo 一.前言 之前学的java,一直用的ssm框架写后台.前段时间 ...
随机推荐
- eclipse 安装spring tools suite插件
之前使用idea进行springboot项目的开发学习,但是由于idea是收费的,总是用着用着说验证码到期之类的,总之还是很不爽,于是就想重新采用eclipse开发springboot项目,为了方便s ...
- C/C++贪心算法解决TSP问题
贪心算法解决旅行商问题 TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如下: 有若干 ...
- [YOLO]《You Only Look Once: Unified, Real-Time Object Detection》笔记
一.简单介绍 目标检测(Objection Detection)算是计算机视觉任务中比较常见的一个任务,该任务主要是对图像中特定的目标进行定位,通常是由一个矩形框来框出目标. 在深度学习CNN之前,传 ...
- Python中的numpy函数的使用ones,zeros,eye
在看别人写的代码时,看到的不知道的函数,就在这里记下来. 原文是这样用的: weights = ones((numfeatures,1)) 在python中help(): import numpy a ...
- 微信小程序如何刷新当前界面
在微信小程序开发的过程中,在一个页面中对数据操作之后我们大多数时间都需要刷新一下当前界面以把操作之后的结果显示出来,但是如何在执行操作后进行本页面的刷新就成了一个问题很大但是很需要的操作.下面介绍一下 ...
- 13.swoole学习笔记--DNS查询
<?php //执行DNS查询 swoole_async_dns_lookup("www.baidu.com",function($host,$ip){ echo $ip; ...
- oracle基础知识小结
一.查看oracle用户.角色信息1.查看所有用户 select * from all_users; select * from user_users; 2.查看用户或角色系统权限 select * ...
- 四、JavaScript之<script>标签的使用
一.代码如下 二.运行效果如下 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" cont ...
- 【SQL必知必会笔记(2)】检索数据、排序检索数据
上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...
- 对于python 3.x与python2.x中新型类的继承特性总结
(1)一般性继承特性 """ 该文件对于python 3.x 及python 2.x的New-style 类的一般性继承特性进行了说明和测试. (1)实例的继承特性:搜寻 ...