本文主要是介绍Oracel集合操作操作符:union(并运算),unionAll,intersect(交运算),minus(差运算),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
SQL集合操作操作符:union(并运算),unionAll,intersect(交运算),minus(差运算)
说明:本文为本人笔记,不足之处,请谅解。如有错误,欢迎指出。
1.union(并运算)
union运算符可以将多个查询结果相加,并消除重复的行形成一个结果集,其结果相当于集合运算中的并运算。union的结果集是以第一条查询语句所查询的列名为列名(且其他的查询语句查询的列的数量要跟第一条查询语句相同)。举例:
错误:(要有相同数量的列)
select id,name from A
union
select id from B
报错:[Err] 1222 - The used SELECT statements have a different number of columns
正确:
select id,name from A
union
select id,name from B
列名、列类型不一样,虽然可以执行,但是查出来的数据混在一起,貌似没用,所以推荐用上一种。
unionAll和union的区别在于:union会处理重复的数据,只显示一条,而unionAll则是不管有没有重复数据,全部显示
3.intersect(交运算)
union可以算OR运算,而intersect比较像AND。mysql不支持intersect。
如:
select name from A where name like "c%" or name like "s%"
intersect
select name from B where name like "c%" or name like "d%"
结果集中只保留以c开头的name。
4.minus(差运算)
minus集合运算符可以找到两个给定集合间的差集,即它会返回所有从第一个查询中返回的,但是没有在第二个查询中返回的记录。
如:
select name from A where name like "c%" or name like "s%"
intersect
select name from B where name like "s%" or name like "d%"
结果集中只保留以s开头的name。
这篇关于Oracel集合操作操作符:union(并运算),unionAll,intersect(交运算),minus(差运算)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!