This question 解释了一种获取多个列的独特组合的方法。但是我想知道DISTINCT,UNION,GROUP BY关键字方法之间的区别。使用它们时,我得到了不同的结果。
我的查询是这样的
查询1。
select
column1,
column2,
column3
from table
group by 1,2,3
查询2。
select distinct
column1,
column2,
column3
from table
查询3。
SELECT DISTINCT(ans) FROM (
SELECT column1 AS ans FROM sametable
UNION
SELECT column2 AS ans FROM sametable
UNION
SELECT column3 AS ans FROM sametable
) AS Temp
我为上述查询得到不同的行数(编辑:前两个给出的行数相等,但最后一个给出的行数不同)。任何机构都可以解释以上查询的内容吗?特别是第三个?
编辑:请注意,我在同一张 table 上做UNION。在那种情况下会发生什么?
最佳答案
从我认为最简单的DISTINCT开始,实际上就是这样。它返回不同的行组合。考虑一下这个数据集:
COL1 COL2 COL3
A B C
D E F
G H I
A B C <- duplicate of row 1
这将返回3行,因为数据集中的第四行与第一行完全匹配。
结果:
COL1 COL2 COL3
A B C
D E F
G H I
GROUP BY通常用于汇总和其他计算
选择COL1,SUM(COL2)
从表
按列1分组;
对于此数据集:
COL1 COL2
A 5
A 6
B 2
C 3
C 4
C 5
会回来
COL1 SUM(COL2)
A 11
B 2
C 12
一个UNION只是从不同查询中获取结果,并将其显示为1个结果集:
Table1
COL1
A
Table2
COLX
B
Table3
WHATEVER_COLUMN_NAME
Giddyup
select COL1 from Table1
UNION
select COLX from Table2
UNION
select WHATEVER_COLUMN_NAME from Table3;
结果集:
A
B
Giddyup
执行联合时,列数据类型必须匹配。您不能将数字列与char列结合(除非您明确执行数据转换)
关于sql - group by,union,Union为多个列选择不同的值之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1271643/