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框架写后台.前段时间 ...
随机推荐
- C# 关于AD域的操作 (首博)
前段时间(因为懒得找具体的时间了)公司说让系统可以进行对AD域的操作,包括创建用户.于是上网查资料,了解何为AD域.还不知道的这边请https://www.cnblogs.com/cnjavahome ...
- Golang的运算符-算数运算符
Golang的运算符-算数运算符 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.算术运算符概述 常见的算术运算符: +: 可表示正号,如",结果为"Jaso ...
- BZOJ 3332
题解:给边赋上权值,然后求最大生成树,如果不符合那就无解 证明:留坑 #include<iostream> #include<cstdio> #include<cstri ...
- tf.argmax()函数作用
tf.argmax()函数原型: def argmax(input, axis=None, name=None, dimension=None, output_type=dtypes.int64) 作 ...
- 125-PHP类__set()魔术方法
<?php class ren{ //定义一个人类 //定义成员属性 private $name='tom'; private $age=15; //定义__set()魔术方法 public f ...
- 《新标准C++程序设计》3.1.4-3.2(C++学习笔记6)
1.类型转换构造函数 (1)定义 只有一个参数,而且不是复制构造函数的构造函数,一般就可以看作是转换构造函数. 当需要的时候,编译系统会自动调用转换构造函数,建立一个无名的临时对象(或临时变量). ( ...
- 如何为 .NET Core 安装本地化的 IntelliSense 文件
在.Net Core 2.x 版本,Microsoft 官方没有提供 .Net Core 正式版的多语言安装包.因此,我们在用.Net Core 2.x 版本作为框架目标编写代码时,智能提成是英文的. ...
- Meeloun教你如何正式切入Essay写作话题
很多同学在Essay写作过程中会发现:如果题目问到解决办法,写来写去,都是政府要颁布政策,人们要提高意识,感觉一点新意也没有.怎么样更好地切合不同的话题,想到最合适的解决办法呢?今天小编为你奉上更多处 ...
- Day 15:缓冲输入输出常用方法和小练习
以拷贝图片为例子,演示异常处理的代码: 拷贝一张图片 import java.io.File;import java.io.FileInputStream;import java.io.FileOut ...
- tableau创建定量值地图
一.官方案例:定量值地图的创建 数据形式: 过程: 分别双击经纬度(默认的纬度会自动添加到行功能区,经度到列功能区) 将Id放入标记卡详细信息 将Magnitude^10(震级^10)放入大小,(该 ...