2014-03-27 47 views
0

我有一個要求,我必須從數據庫表中取數據。
條件是,如何一次取出兩個表中的數據

有兩個表中包含namemobileaddressage相同列。例子:
Ex。表名如學生老師

現在如果我不覺得學生表什麼話,我會從教師表中檢索數據。

如何編寫此查詢?

+0

您是不是隻想表示要將這兩個表中的查詢「聯合起來」,因爲它們的結構是相同的?或者它必須實際上是有條件的,所以如果'student'爲空 - 或者你是否使用相同的鍵來搜索兩個表,你只能查詢'teacher'? –

+0

不是。如果我在第一個表中找不到任何內容,那麼我將從第二個表中檢索數據。如果我在第一個表中有數據,我將永遠不會去第二個表。 – AmitG

回答

2

要從兩個表中獲得結果,您可以使用UNION ALL。但是,在表Student中沒有匹配的行時,您只想訪問表Teacher。這稍微困難一些。您仍然可以使用UNION ALL,但需要在您的老師查詢中使用EXISTS子句。

select * from student 
union all 
select * from teacher where not exists (select * from student); 
+0

你錯過了'WHERE student.something = teacher.something' –

+0

不,我不是問是否存在一個與老師有共同點的學生。我問是否有一個學生。在實際的查詢中,可能存在涉及哪些條款,這些條款將不得不在這裏添加,但是沒有where子句將學生與教師匹配。 –

+0

好吧,我明白了!奇怪的要求。 –

相關問題