浏览 3314 次
锁定老帖子 主题:SQL里的集合运算
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-09
输入: SQL> SELECT * FROM FOOTBALL 输出: NAME ------ ABLE BRAVO CHARLIE DECON EXITOR FUBAR GOOBE 7 rows selected. -------- 输入: SQL> SELECT * FROM SOFTBALL 输出: NAME ----- ABLE BAKER CHARLIE DEAN EXITOR FALCONER GOOBER 7 rows selected. -------- 在这两个表中有哪些不重复的人员呢 输入/输出: SQL> SELECT NAME FROM SOFTBALL 2 UNION 3 SELECT NAME FROM FOOTBALL NAME ------- ABLE BAKER BRAVO CHARLIE DEAN DECON EXITOR FALCONER FUBAR GOOBER 10 rows selected. ---------- UNION 返回了两个表中的10 个记录它们是不重复的但是两个表中共有多少人呢包括重复的人员 输入/输出: SQL> SELECT NAME FROM SOFTBALL 2 UNION ALL 3 SELECT NAME FROM FOOTBALL NAME ---------- ABLE BAKER CHARLIE DEAN EXITOR FALCONER GOOBER ABLE BRAVO CHARLIE DECON EXITOR FUBAR GOOBER 14 rows selected. ------------------ 分析可以看到UNION ALL 与UNION 一样对表进行了合并但是它不去掉重复的记录 可是如果我们想知道都有谁同时在两个表中呢UNION 无法做到这一点我们需要学习使用 INTERSECT INTERSECT 相交 INTERSECT 返回两个表中共有的行看下例它将返回两个表中有存在的员工 输入: SQL> SELECT * FROM FOOTBALL 2 INTERSECT 3 SELECT * FROM SOFTBALL 输出 NAME -------- ABLE CHARLIE EXITOR GOOBER -------- 分析这些记录是两个表中都存在的 MINUS 相减 MINUS 返回的记录是存在于第一个表中但不存在于第二个表中的记录 例如输入: SQL> SELECT * FROM FOOTBALL MINUS SELECT * FROM SOFTBALL 输出 NAME -------- BRAVO DECON FUBAR -------- 上例中显示了三个不在垒球队中的足球队员如果你把语句的次序颠倒那么你将得到在垒球队中但不在足球队中的队员 输入: SQL> SELECT * FROM SOFTBALL MINUS SELECT * FROM FOOTBALL 输出 NAME ------- BAKER DEAN FALCONER -------- 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |