關于多個子查詢,其中一個為空,那所有資料都沒有,該如何解決該問題
select * from
(select f1 from t1 where ...) a1,
(select f1 from t1 where ...) a2,
(select f1 from t2 where ...) a3,
.....................
如果a1沒有記錄,即使其他子查詢也有數,那主查詢也沒數,我想不論子查詢是否有沒有數,只要別的子查詢有記錄,就可以獲取,該如何解決呢?
uj5u.com熱心網友回復:
樓主給出一些測驗資料,和你的預期結果,沒看明白你想實作什么樣的效果;uj5u.com熱心網友回復:
這個需要確認一張主表,意思就是說一定會有資料,其他的可能會沒有,用外聯接關聯就行a.id=b.id(+) and a.id=c.id(+)如果說都有可能沒有的話,就用多個union 兩兩關聯查吧。
uj5u.com熱心網友回復:
表t1f1 rq
10 2016-10-13
f2 rq
20 2016-10-11
select a1.f1,a1.f1-a2.f1 from
(select f1 from t1 where rq='2016-10-13') a1,
(select f1 from t1 where rq='2016-10-12') a2
12號這天沒資料,結果主查詢就沒記錄
我想實作即使12號沒資料,但是13號的資料仍然可以獲取,即得到10
uj5u.com熱心網友回復:
用LEFT JOIN 實作
SQL> select e.* from emp e where e.empno=7369;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
SQL> select e.* from emp e where e.empno=7970;
未選定行
SQL> select e1.* from (select e.* from emp e where e.empno=7369) e1 left join
2 (select e.* from emp e where e.empno=7970) e2 on e1.empno=e2.empno;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
uj5u.com熱心網友回復:
外連接with t1 as
(select 10 f1,'2016-10-13' rq from dual
union all
select 20 f1,'2016-10-11' rq from dual
)
select a1.f1,a1.f1-a2.f1 from
(select f1 from t1 where rq='2016-10-13') a1
full join
(select f1 from t1 where rq='2016-10-12') a2
on 1=1
uj5u.com熱心網友回復:
建議度娘 oracle + 左連接(外連接)。再參照樓上各位SQL,理解左連接后
請參考
http://bbs.csdn.net/topics/390152319
uj5u.com熱心網友回復:
5樓的,外連接就可以了uj5u.com熱心網友回復:
select f1 from t1 where .. union select f2 from t2 where ... union select f3 from t3 where ..uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/115059.html
標籤:基礎和管理
