Enj*_*ing 9 sql union group-by distinct
这个问题解释了一种获得多列独特组合的方法.但是为了这个目的,我想知道DISTINCT,UNION,GROUP BY关键字方法的方法之间的区别.使用它们时会得到不同的结果.我的查询就像这个查询1.
select
column1,
column2,
column3
from table
group by 1,2,3
Run Code Online (Sandbox Code Playgroud)
查询2.
select distinct
column1,
column2,
column3
from table
Run Code Online (Sandbox Code Playgroud)
查询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
Run Code Online (Sandbox Code Playgroud)
我为上面的查询获得了不同的行数(编辑:前两个给出相同数量的行,但最后一个给出了不同的行).任何机构都可以解释上述查询的作用吗?特别是第三个?
编辑:请注意我在同一张桌子上做UNION.在那种情况下会发生什么?
Bre*_*ann 10
从我认为最简单的DISTINCT开始,就是这样.它返回不同的行组合.想想这个数据集:
COL1 COL2 COL3
A B C
D E F
G H I
A B C <- duplicate of row 1
Run Code Online (Sandbox Code Playgroud)
这将返回3行,因为数据集中的第4行与第一行完全匹配.结果:
COL1 COL2 COL3
A B C
D E F
G H I
Run Code Online (Sandbox Code Playgroud)
GROUP BY经常用于汇总和其他计算,按列1从表组中选择COL1,SUM(COL2);
对于此数据集:
COL1 COL2
A 5
A 6
B 2
C 3
C 4
C 5
Run Code Online (Sandbox Code Playgroud)
会回来的
COL1 SUM(COL2)
A 11
B 2
C 12
Run Code Online (Sandbox Code Playgroud)
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;
Run Code Online (Sandbox Code Playgroud)
结果集:
A
B
Giddyup
Run Code Online (Sandbox Code Playgroud)
执行联合时,列数据类型必须匹配.你不能UNION一个带有char列的数字列(除非你明确地执行数据转换)
| 归档时间: |
|
| 查看次数: |
11060 次 |
| 最近记录: |