mysql 左右表并集 mysql左右连接语法

您所在的位置:网站首页 mysql左连接和右连接语法 mysql 左右表并集 mysql左右连接语法

mysql 左右表并集 mysql左右连接语法

2024-05-26 08:39| 来源: 网络整理| 查看: 265

继续MySQL的学习啦~~

如果对建表、基本查询有问题的,可以去看看我的上一篇博客~

MySQL入门集锦(一)

1、左右连接

以左连接为例,假设左表为A,右表为B,左连接的语法为:A left join B on 条件;

关于左连接,我们可以这样理解:以A表为中心,滑动B表进行关系匹配,匹配成真的条目提取出来。

据此,我们的A表中的每一条数据至少存在1次在新表中,如果表A中的某一条数据无法与表B中的数据

进行匹配的话,用Null值补齐。而表B中无法匹配的条目将不出现在新表中。

提醒:右连接与左连接的本质是一样的,A left join B on 条件 等价于 B right join on 条件。

在MySQL使用中,我们推荐使用左连接。

具体例子:

mysql 左右表并集 mysql左右连接语法_数据

表A                                

mysql 左右表并集 mysql左右连接语法_mySQL左右连接支持+号吗?_02

  表B

select b_name , b_other, g_name

from boys left join girls on b_other = g_other;

结果如下:

mysql 左右表并集 mysql左右连接语法_MySQL_03

 

2、内连接

内连接可以理解为是同一数据的左连接和右连接的交集。即不出现上述中所带有的Null值的条目。

内连接语法: A inner join B on 条件;

具体例子:

select b_name , b_other, g_name

from boys inner join girls on b_other = g_other;

结果如下:

mysql 左右表并集 mysql左右连接语法_MySQL_04

 

注意:多次连接时可以将前一次连接得到的结果看成一个临时表,然后继续进行连接操作。同时,在连接操作之后select的5种语句可以使用。

具体例子(球队比赛):

mysql 左右表并集 mysql左右连接语法_MySQL_05

比赛表                          

mysql 左右表并集 mysql左右连接语法_MySQL_06

球队队名表

取出结果形式:主队名称   比赛结果   客队名称    比赛时间

select t1.t_name, m_result, t2.t_name, m_date from 

(m left join t as t1 on h_id = t1.t_id)

left join t as t2 on g_id = t2.t_id;

结果如下:

mysql 左右表并集 mysql左右连接语法_MySQL_07

 

3、union(合并两张或多张表,只要表的列数相同就能合并,而列名取的是第一行数据的列名)

具体例子:

(取出栏目四和栏目五中的所有商品)

mysql 左右表并集 mysql左右连接语法_内连接_08

改进(取出栏目四和栏目五下的商品按价格升序排列)

(select goods_id, goods_name, cat_id, shop_price

from goods 

where cat_id = 4)

union

(select goods_id, goods_name, cat_id, shop_price

from goods 

where cat_id = 5)

order by shop_price asc;

mysql 左右表并集 mysql左右连接语法_数据_09

注意:在使用union时,当内部查询单独使用order by时,在Mysql代码优化分析器中该语句会被优化而不产生效果。

同时,使用union后得到的可视为一张表,因此可以进行继续操作。

当内部查询order by 与limit配合使用时,order by是不会被过滤的。

具体例子:

(取出栏目3下商品价格前3的商品和栏目下商品价格前2的商品)

(select goods_id, goods_name, cat_id, shop_price from goods where cat_id = 3 order by shop_price desc limit 3) union (select goods_id, goods_name, cat_id, shop_price from goods where cat_id = 4 order by shop_price desc limit 2);

结果如下:

mysql 左右表并集 mysql左右连接语法_内连接_10

 

在union使用中,默认为是去重复的,如果不希望去重复,即所有条目都展示时,只需要在union后加上all就可以了。

未完待续......

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3