我有一個要求,我必須從數據庫表中取數據。
條件是,如何一次取出兩個表中的數據
有兩個表中包含name
,mobile
,address
,age
相同列。例子:
Ex。表名如學生和老師。
現在如果我不覺得學生表什麼話,我會從教師表中檢索數據。
如何編寫此查詢?
我有一個要求,我必須從數據庫表中取數據。
條件是,如何一次取出兩個表中的數據
有兩個表中包含name
,mobile
,address
,age
相同列。例子:
Ex。表名如學生和老師。
現在如果我不覺得學生表什麼話,我會從教師表中檢索數據。
如何編寫此查詢?
要從兩個表中獲得結果,您可以使用UNION ALL。但是,在表Student中沒有匹配的行時,您只想訪問表Teacher。這稍微困難一些。您仍然可以使用UNION ALL,但需要在您的老師查詢中使用EXISTS子句。
select * from student
union all
select * from teacher where not exists (select * from student);
你錯過了'WHERE student.something = teacher.something' –
不,我不是問是否存在一個與老師有共同點的學生。我問是否有一個學生。在實際的查詢中,可能存在涉及哪些條款,這些條款將不得不在這裏添加,但是沒有where子句將學生與教師匹配。 –
好吧,我明白了!奇怪的要求。 –
您是不是隻想表示要將這兩個表中的查詢「聯合起來」,因爲它們的結構是相同的?或者它必須實際上是有條件的,所以如果'student'爲空 - 或者你是否使用相同的鍵來搜索兩個表,你只能查詢'teacher'? –
不是。如果我在第一個表中找不到任何內容,那麼我將從第二個表中檢索數據。如果我在第一個表中有數據,我將永遠不會去第二個表。 – AmitG