SQL UNION Operator-note

UNION ALL 用法

w3schools 给的这个範例来说

SELECT City, Country FROM CustomersWHERE Country='Germany'UNION ALLSELECT City, Country FROM SuppliersWHERE Country='Germany'ORDER BY City;Edit the SQL Statement
SELECT City, Country FROM CustomersWHERE Country='Germany'

这个部分会显示十一列德国城市的资料

SELECT City, Country FROM SuppliersWHERE Country='Germany'ORDER BY City;

而这个部分会显示三列德国城市的资料

然而当我们在两个SELECT中间加上UNION ALL的话

最终显示的资料就会是十四列,也就是两个SELECT结果的相加
也意味者即使当中有重複的资料,也会被列出来,而这个範例也是如此
这个部分详细可以直接去玩玩看,就可以知道是哪一些资料有重複
w3school_SQL_TryEditorv1.6

UNION 用法

同样的两个SQL但是换成UNION呢?

SELECT City, Country FROM CustomersWHERE Country='Germany'UNIONSELECT City, Country FROM SuppliersWHERE Country='Germany'ORDER BY City;

相较于UNION ALL
最终显示的资料会是十三列,如果有点进去玩玩看的话可以发现其中Berlin这个城市两个资料表都有,属于重複
Customers这个资料表中选出的有11列,Suppliers的有3列
因此最后显示的列数会是11+3-1 = 13列,因为要不重複的资料,如果有重複的话,那笔资料只显示一笔

前面的SQL考虑的是城市,因此最终如果同样的城市显示两笔的话感觉怪怪的,加上前面又没有其他可以用于判断这个资料表是干嘛用的栏位名称,因此重複的资料就只显示一笔就好

不然再资料型别相似及SELECT语句下的一模一样的情况下,几乎都是将结果合併
下面的结果接续上面的结果,如这个範例

SELECT 'Customer' AS Type, ContactName, City, CountryFROM CustomersUNIONSELECT 'Supplier', ContactName, City, CountryFROM Suppliers

91+29 = 120列
这个範例显示的结果是「列出所有在资料库中的客户及供应商的联络人名字、城市及国家」

笔记来源:SQL UNION Operator


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章