- UNION用于合并两个或多个select语句的结果集,并消去表中任何重复行。
- UNION ALL用于合并两个或多个select语句的结果集,保留重复行。
使用UNION操作符需要满足三个条件:列是相同数量、列具备相似的数据类型、每条select语句中的列的顺序必须相同。
补充:
- 左、右、内连接,是合并字段,是横向合并。
- 联合查询,是合并行,是纵向合并。
其实事情是这样的,由于编程能力太弱,被前辈小姐姐怼了,让我去把一张表里的一部分sql脚本拿去搞懂逻辑结构,如下:
IF object_id('tempdb.dbo.#temp_last') is not null drop table #temp_last
select [product_code],count(1) cnt1
into #temp_last
from [dbo].[xx_xx_discussPrice]
where [insert_time]>='2020-03-09'
and [insert_time]<'2020-03-10'
and [product_code] in(
select [product_code]
from [dbo].[xx_temp_xx_alertprice]
)
group by[product_code]
第一块sql脚本的意思是:
如果临时表#temp_last(上次)非空就删掉它,再新建一张具有product_code字段和相应产品数量(命名为cnt1)的临时表#temp_last。其中product_code字段和相应产品数量来自表dbo.xx_xx_discussPrice,这些记录的限制条件是:插入时间在2020-03-09 00:00:00到24:00:00之间,且产品编号来自表dbo.xx_temp_xx_alertprice(价格警戒)。当这些数据从库里取出后,按照产品编号进行分组,即一个产品编号下有多少条记录。
IF object_id('tempdb.dbo.#temp') is