MySQL之join语句
来源:互联网 发布:淘宝店铺知识产权侵权 编辑:程序博客网 时间:2024/05/09 01:28
介绍
join用于多表中字段之间的联系,语法如下
...from table1 inner|left|right join table2 on...
首先建表
1、inner join
基于连接谓词将两张表的列组合在一起,产生新的结果表
select * from user1 inner join user2 on user1.user_name=user2.user_name;
2、left join
从左表产生一套完整的记录,还有右边匹配的记录,如果没有匹配就包含null
select * from user1 left join user2 on user1.user_name=user2.user_name;
只查询左表的数据,不包含右表的,使用where 限制右表key为null
select * from user1 left outer join user2 on user1.user_name=user2.user_name where user2.user_name is null;
使用left join实现inner join的效果
使用where 限制左右表key不为null
select * from user1 left outer join user2 on user1.user_name=user2.user_name where user1.user_name is not null and user2.user_name is not null;
求差集
就求除重合的其他全部
mysql> select * from user1 left join user2 on user1.user_name=user2.user_name -> where user2.id is null -> union -> select * from user1 right join user2 on user1.user_name=user2.user_name -> where user1.id is null;
3、right join
select * from user1 right join user2 on user1.user_name=user2.user_name;
4、cross join
交叉连接,得到的结果是两个表的乘积,即笛卡尔积
select * from user1 cross join user2;
再试一下 select * from user1 inner join user2;
可以看出在MySQL cross join、inner join、join这三者实现效果一样
5、full join
full join的实现使用左连接和右连接一起实现,如果没匹配,对面就null
mysql> select * from user1 left join user2 on user1.user_name=user2.user_name -> union -> select * from user1 right join user2 on user1.user_name=user2.user_name;
6、3个或者3个以上表间的连接
select * from( user1 inner join user2 on user1.user_name=user2.user_name ) inner join user_kills;
括号里面的SQL语句可以看成一个表,然后又使用inner join….on连接起来的两个或者多个表,作为新表与其他表进行连接
0 0
- MySQL之join语句
- MYSQL之join语句使用
- MySql join语句
- MySql Join语句
- mysql的join语句
- sql语句之join
- mysql :left join语句优化
- Mysql join语句的优化
- Mysql join语句的优化
- Mysql join语句使用教程。
- mysql之join
- MySQL 之 join 详解
- MySQL优化之JOIN
- mysql数据库之left join与join
- mysql 语句 union ,union all left join,right join
- mysql的join语句的优化方法
- MySQL学习笔记-join语句类型
- mysql update join sql语句总结
- Mybatis简单搭建环境
- HDU 3790 最短路 Dijkstra
- 历届试题 错误票据 (蓝桥杯)
- 建立一个存储和处理字符串的类DelCharStr。构造函数:动态申请存储字符串所需内存空间,并且即能用指定的字符串也能用默认的值0为所声明的对象进行初始化。
- Angular2源码解读之Directive
- MySQL之join语句
- 零基础写java网络爬虫
- Linux学习_第一章计算机结构001
- c中三个数的排序
- 蓝桥杯 历届试题 九宫重排 (八数码问题--康托展开去重 + bfs搜索)
- nyoj 973 天下第一
- Vue入门知识点—初识vue
- [转]POJ 1001 Exponentiation Java大数处理高精度小数
- NGUI学习笔记(六):ScrollView、Grid和Table