mysql语句的左外链接_MySQL中的JOIN连接

一、新手 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 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值