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

xiaoxiao2022-06-11  44

对于写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这个优缺点还在探索中,希望大神引导指正。。。。

转载请注明原文地址: https://www.6miu.com/read-4930425.html

最新回复(0)