mysql 左右表并集 mysql左右连接语法 |
您所在的位置:网站首页 › mysql左连接和右连接语法 › mysql 左右表并集 mysql左右连接语法 |
继续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使用中,我们推荐使用左连接。 具体例子: 表A 表B select b_name , b_other, g_name from boys left join girls on b_other = g_other; 结果如下:
2、内连接 内连接可以理解为是同一数据的左连接和右连接的交集。即不出现上述中所带有的Null值的条目。 内连接语法: A inner join B on 条件; 具体例子: select b_name , b_other, g_name from boys inner join girls on b_other = g_other; 结果如下:
注意:多次连接时可以将前一次连接得到的结果看成一个临时表,然后继续进行连接操作。同时,在连接操作之后select的5种语句可以使用。 具体例子(球队比赛): 比赛表 球队队名表 取出结果形式:主队名称 比赛结果 客队名称 比赛时间 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; 结果如下:
3、union(合并两张或多张表,只要表的列数相同就能合并,而列名取的是第一行数据的列名) 具体例子: (取出栏目四和栏目五中的所有商品) 改进(取出栏目四和栏目五下的商品按价格升序排列) (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; 注意:在使用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);结果如下:
在union使用中,默认为是去重复的,如果不希望去重复,即所有条目都展示时,只需要在union后加上all就可以了。 未完待续......
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |