最新文章
- MySQL中, group by 和 order by 一起使用会有排序问题,group by 和 order by 同时使用时要注意的地方
- Vue学习笔记(10) ——Vue组件中的data和methods
- Vue学习笔记(9) ——Vue组件创建的几种方式
- Vue学习笔记(8) ——Vue实例的生命周期
- Vue学习笔记(7) —— 过滤器 filter的基本使用
- Vue学习笔记(6) ——v-if指令和v-show指令
- Vue学习笔记(5) —— v-for指令和key属性
- Vue学习笔记(5) —— Vue中样式-class样式和style样式
- Vue学习笔记(4) —— v-model指令,双向数据绑定
- Vue学习笔记(3) —— Vue事件修饰符
关注我

在线咨询
x
有什么可以帮到你

点击咨询
MySQL中的JOIN连接
- 分类:MySQL技术
- 时间:2017-11-19
- 共1533人围观
简介内链接为左右连接的并集,那有没有左右连接的交集 , 并集是外连接,mysql 中不支持外连接 ,oracle 和 sql server 可以。左连接的特点 ,左表所有的数据全部取出来 , 然后到对应的右表去找数据 , 如果找不到数据 , 补 null。同理,右连接也一样
一、新手 1+N 模式查询
题目: 查询价格大于 2000 元的商品及其栏目名称
1. 价格大于 2000 元的商品
select goods_id,goods_name,cat_id,shop_price from goods where shop_price>2000;
2. sql 执行之后 , 循环取出 cat_id;
$sql = 'select goods_id,goods_name,cat_id,shop_price from goods where shop_price>2000'; $rs = mysql_query($sql); $data = array(); while($row = mysql_fetch_assoc($rs)) { $data[] = $row; } foreach ($data as $key => $value) { $sql = 'select cat_name from category where cat_id='.$v['cat_id']; } // 一条sql语句 -> N条数据 -> N条查询
我们需要一条 sql 语句查询出来 , 那有没有可能从一张表中就能查出来 ? 不可能 , 查询的字段是分别在两张表中的 , 肯定需要从两张表中查询出来 -> 连接查询
二、内连接查询
左边的表的每一行 , 都有一次机会跟右边表去试图连接,不过能不能连接上是有条件的
select boy.hid,boy.bname,girl.hid,girl.gname from boy inner join girl on boy.hid=girl.hid; # 内链接为左右连接的并集 # 那有没有左右连接的交集 , 并集是外连接,mysql 中不支持外连接 ,oracle 和 sql server 可以
三、左连接及右连接查询
左连接和右连接类似 , 只是调个方向
1. 左连接,所有男士站出来 , 找到自己的另一半 , 没有的 , 以 NULL 补齐
select boy.hid,boy.bname,girl.hid,girl.gname from boy left join girl on boy.hid=girl.hid; # 左连接的特点 : # 左表所有的数据全部取出来 , 然后到对应的右表去找数据 , 如果找不到数据 , 补 null
2. 右连接 , 以右表为准 , 全部取出
select boy.hid,boy.bname,girl.hid,girl.gname from boy right join girl on boy.hid=girl.hid;
连接查询 , 通过 on 将两张表打通一个桥梁 , 拼接成一张大表,既然是一张大表 , 我们后面是不是可以跟着写那 5 个子句 where group by ...
上一篇:MySQL三种子查询详解
下一篇:MySQL中的 union 查询