Union Operation的列数相同

时间:2013-01-31 04:53:32

标签: sql sql-server-2008-r2 union union-all

我正在通过工会和工会的所有逻辑和尝试的例子。令我困惑的是,为什么有必要在两个表中使用相同数量的列来执行联合或联合所有操作?

请原谅我,如果我的问题很愚蠢,但我无法在任何地方得到确切答案。从概念上来说,只要存在一个公共列,合并两个表应该很容易吗?(就像连接操作一样)。但事实并非如此,我想知道为什么?

5 个答案:

答案 0 :(得分:4)

JOIN操作不需要在两个表中选择相同数量的列。 UNION操作是不同的加入。可以把它想象成两个独立的数据列表,可以在一个大块中“粘贴”在一起。您不能拥有不匹配的列。

另一种看待它的方法是JOIN这样做:

TableA.Col1, TableA.Col2 .... TableB.Col1, TableB.Col2

UNION这样做:

TableA.Col1, TableA.Col2
TableB.Col1, TableB.Col2

JOINS将行添加到行,UNIONS向现有行添加更多行。这就是为什么他们必须“匹配”。

马特

答案 1 :(得分:1)

加入操作combines columns from two tables

Union和Union all combines two results sets的位置,因此为了合并两个结果,您需要具有相同数量的具有兼容数据类型的列。

在现实世界中,例如为了打一场板球比赛,你需要两支球队中的11名球员,一支球队中的7名球员和对手队伍中的11名球员。

答案 2 :(得分:1)

让我们说你有EMPTable列和值如下: id,姓名,地址,工资,DOB 1,' SAM',' 2 Merck Ln',100000,' 08/18/2080'

如果你想要只使用列名的UNION(假设值为' TOBY'),则意味着你必须将其他值默认为NULL(智能软件或数据库可以隐式为你做),实质上转换为下面(以防止关系表的完整性) - >

1, 'SAM', '2 Merck Ln', 100000, '08/18/1980'
UNION
NULL,'TOBY', NULL, NULL, NULL

A" union"根据定义,是同一类别或类型的(不同)值的合并。

答案 3 :(得分:0)

您需要研究UNIONJOIN之间的区别。

基本上,当您想从一个来源(表,视图,表组等)获取记录并将这些结果与来自其他来源的记录组合时,可以使用UNION。它们必须具有相同的列才能获得一组通用结果。

如果要将来自一个来源的记录与其他来源相关联,请使用JOIN。根据您的需要,有几种类型的JOIN(INNER,LEFT,RIGHT等)。使用JOIN时,您可以指定您想要的任何列。

祝你好运。

答案 4 :(得分:0)

当我们想要从两个或多个表中获取数据时,基本上使用

join,为此,不需要获取相同数量的列,考虑使用规范化概念我们将表分为两部分的情况,

emp [eid,ename,edob,esal] emp_info [eid,emob_no]

这里我想知道姓名和手机号码。然后我们将使用所有员工的概念,因为我们所需的信息不能由同一个表格提供。

所以我们将使用..

选择E.ENAME,EI.EMOB_NO来自EMP E,EMP_INFO EI WHERE E.EID = EI.EID AND LOWER(E.ENAME)='john';

现在考虑我们想要找到那些在银行拥有储蓄账户和贷款账户的员工的情况。这里我们想要从两个表结果中找到常见元组。为此,我们将使用set操作。 [十字路口]

对于集合操作2条件必须满足。

  1. 同样没有。必须从每个表中提取属性。

  2. 每个属性的
  3. 域必须与较高属性的域相同...