OR 改写union数据变少
<pre name="code" class="sql">SQL> SELECT deptno FROM emp WHERE mgr = 7698 OR job = 'SALESMAN' ORDER BY 1;
DEPTNO
----------
30
30
30
30
30
SQL> SELECT deptno FROM emp WHERE mgr = 7698
2 UNION
3 SELECT deptno FROM emp WHERE job = 'SALESMAN'
4 ORDER BY 1;
DEPTNO
----------
30
SQL>
这种情况下UNION去从后就不等价了,这时候需要加上主键列,如果没有主键列可以使用rowid或者rownum
SQL> SELECT rownum,deptno FROM emp WHERE mgr = 7698 OR job = 'SALESMAN' ORDER BY 1;
ROWNUM DEPTNO
---------- ----------
1 30
2 30
3 30
4 30
5 30
SQL> SELECT rownum,deptno FROM emp WHERE mgr = 7698
2 UNION
3 SELECT rownum,deptno FROM emp WHERE job = 'SALESMAN'
4 ORDER BY 1;
ROWNUM DEPTNO
---------- ----------
1 30
2 30
3 30
4 30
5 30
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。