菜鸟的项目总结之关联查询

对于写sql语句,本身就是半吊子,更别提是稍微复杂一点的语句;今天在改bug的过程中,就遇到了几个不大不小的问题,细细想来,基本都是关联查询的问题,这里的关联并不是左联(left join)和右联(right join),今天遇到的是union和union  all这两个。

先来看看它们的区别:

union 检查重复,关联的字段值都要相同
union all 不做检查,关联的表的字段都显示出来

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

UNION 语法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

UNION ALL 语法

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

遇到的第一个问题,是数据重复的问题;当要进行采购和销售对比的时候,当天是否有采购单,或者是否有销售单,但是即使都有,两者可能会是同一中商品,也可能不是,所以这里就会出现重复数据;对于菜鸟,写这样的语句无疑是个挑战,没办法,那也得写啊!写了很多(反正是很久),总算写出了不论速度的语句;当以销售为主,关联采购的时候,可能会出现没有的情况,所以这里要使用ifnull函数,这时候的列已经确定了,第二个重复数据的问题就是由于以采购为主的时候,关联订单的时候,出现了列值不同的情况,经检查是因为sql语句有问题,查询字段的获取问题--代码待贴。。。

当用union关联两个查询的时候,我用了order by排序,很不幸,报错了,在网上搜了一下,是什么语法的问题,要加上(),实验过后果然这样

(SELECT E_Name FROM Employees_China order by name)
UNION
(SELECT E_Name FROM Employees_USA order bu name)

union这个优缺点还在探索中,希望大神引导指正。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值