Mysql中Union和Join的分别应用(主讲Union)

一、MySQL UNION 必须遵循以下基本规则:

1.在您要使用的所有表中,列的数量和顺序应该相同。(未对齐的列可以用空列占位
2.数据类型必须与每个选择查询的相应位置兼容。
3.在不同的 SELECT 查询中选择的列名必须具有相同的顺序。(列名不同最后会被第一个表覆盖

二、UNION 与 JOIN 的区别

Union 和 Join 子句不同,因为 union 总是垂直组合结果集,而 join水平附加输出。我们可以通过以下图例来理解它:
图解union与join的区别

三、UNION 与 UNION ALL 的区别

union的列会去重,union all则不会去重保留所有数据

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google      	| https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝        	| https://www.taobao.com/   | 13    | CN      |
| 3  | 奔月教程     	| http://www.runoon.com/    | 4689  | CN      |
| 4  | 微博        	| http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow| http://stackoverflow.com/ | 0     | IND     |
+----+--------------+---------------------------+-------+---------+
mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP 	  | http://weibo.com/       | CN      |
|  3 | 淘宝 APP	  | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+

UNION:

# SELECT country FROM Websites
# UNION
# SELECT country FROM apps ORDER BY country;

mysql> SELECT country FROM websites UNION SELECT country FROM apps ORDER BY country;
+---------+
| country |
+---------+
| CN      |
| IND     |
| USA     |
+---------+
3 rows in set (0.00 sec)

UNION ALL:

# SELECT country FROM Websites
# UNION ALL
# SELECT country FROM apps ORDER BY country;

mysql> SELECT country FROM websites UNION ALL SELECT country FROM apps ORDER BY country;
+---------+
| country |
+---------+
| CN      |
| CN      |
| CN      |
| CN      |
| CN      |
| CN      |
| IND     |
| USA     |
| USA     |
+---------+
9 rows in set (0.00 sec)

Example1:

# SELECT country, name FROM websites 
# WHERE country='CN' 
# UNION ALL 
# SELECT country, app_name FROM apps 
# WHERE country='CN' 
# ORDER BY country;

mysql> SELECT country, name FROM websites
    -> WHERE country='CN'
    -> UNION ALL
    -> SELECT country, app_name FROM apps
    -> WHERE country='CN'
    -> ORDER BY country;
+---------+--------------+
| country | name         |
+---------+--------------+
| CN      | 微博         |
| CN      | 淘宝 APP     |
| CN      | 淘宝         |
| CN      | QQ APP       |
| CN      | 奔月教程     |
| CN      | 微博 APP     |
+---------+--------------+
6 rows in set (0.00 sec)

Example2:

SELECT
	o.platform,
	o.userAccount,
	o.warehouseSku,
	o.salesQty salesOrderQty,
	NULL AS salesRetundQty, # 空数据列占位
	ROUND( o.salesAmount, 4 ) salesOrderAmount,
	NULL AS salesRefundAmount, # 空数据列占位
	o.selling_fees,
	o.fba_fees,
	ROUND( o.unitTail, 4 ) orderUnitTail,
	NULL AS retundUnitTail  # 空数据列占位
FROM

参考文献:https://mp.weixin.qq.com/s?__biz=MzU5NzUxMzEzNQ==&mid=2247489778&idx=5&sn=47d9834c93e7c4cf8406392a0041b52b&chksm=fe531e32c92497241fd6ca5a289203e76c04bb9bd86917647eb63ab51d6a68c8b511a1003a14&scene=27

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQLUNIONUNION ALL是用于将两个或多个结果集合并的操作符。 引用指出,UNION会对结果集进行排序,并确保返回的结果集不包含重复数据。而UNION ALL只是简单地将两个结果集合并后返回,不进行排序。从效率的角度来看,UNION ALL比UNION更快。因此,如果可以确定合并的结果集不包含重复数据且不需要排序,就应该使用UNION ALL。 引用提供了一个示例,显示了如何使用UNION ALL操作符将两个结果集合并在一起。 引用进一步解释了UNIONUNION ALL之间的区别。它指出,UNION会筛选掉重复的记录,返回的结果集不会包含重复的记录;而UNION ALL不会去除重复记录,直接连接并返回所有值。 因此,在MySQL,如果需要合并结果集并且不关心重复记录或者已经确保结果集不包含重复数据,可以使用UNION ALL操作符;如果需要合并结果集并且确保返回的结果集不包含重复数据,可以使用UNION操作符。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [MySQL: unionunion all区别](https://blog.csdn.net/henuzwt123/article/details/117772430)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [mysqlunionunion all](https://blog.csdn.net/t194978/article/details/123490979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值