程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL語句之查詢表合並

SQL語句之查詢表合並

編輯:關於SqlServer

SQL語句強大的,完美的,使用它可以完成各種可能的需求。下邊就說說今天遇到的問題,一同事在做讀取數據時,碰到這樣的疑惑,分別從兩個表中讀取 數據,讀取的字段不一樣,但最後呈現的列都是一樣的。能否有辦法一次合並這兩個表中的數據到前台進行輸出呢?因為在Silverlight進行開發時,讀 取數據的操作都是異步操作,如果對於此過程,使用兩次查詢完成兩個表數據的讀取,除了浪費性能,在代碼的同步性上也有所下降,此問題的出現,我覺得SQL 肯定是可以的,就幫這同事處理之,果然很快就解決了,現分享給大家。

先說一下涉及到的兩個表:

考試表:ExamTB

涉及字段:EId int,EName varchar(50),SubjectId int,EStartTime datetime

任務表:TaskTB

涉及字段:TId int,TName varchar(50),SubjectId int,TStartTime datetime

當然這兩個表還有其他一些不一樣的字段,此處忽略,但查詢出來的就是如上字段,兩個表查詢出相同的東西,現在就是要把兩個查詢的結果合並到一個表中輸出出來,當然額外加一個字段Type標識是考試表,還是任務表中的數據,原始的想法:

select EId,EName ,SubjectId ,EStartTime ,1 as type from ExamTB

select TId ,TName ,SubjectId ,TStartTime ,2 as type from TaskTB

一看就明了,雖然從兩個不同的表中讀取數據,但顯示的結果都是一樣的,要是能從一個表出去,效果特好,想到連表把兩個表連在一個表,不行呀

沒有相互關聯的字段。此時想到的臨時表,對使用臨時表把記錄都存在一塊不就可以了。

怎麼存儲呢,不會用游標逐一循環表,實現插入吧,那也太折騰了,經分析不用使用此功能即可實現相應的功能。

具體代碼如下:

--創建用於存儲相同數據的臨時表
CREATE TABLE #TempTB (
TId int,
TName varchar(50),
SubjectId int,
TType int
)
--插入考試表數據,1表示是考試
insert into #TempTB(TId,TName,SubjectId,TType)
select EId,EName,SubjectId,EStartTime ,1
from ExamTB
--插入任務表數據,2表示此數據是來自任務表
insert into #TempTB(TId,TName,SubjectId,TType)
select TId,TName,SubjectId,TStartTime,2
from TaskTB
--輸出數據
select * from #TempTB
--刪除臨時表
drop table #TempTB

通過如上的方法,完成查詢相同數據內容,在同一個表的輸出,方法行之有效,當然涉及到相關業務邏輯,已經省略,此處只針對對應的需求,對涉及的關聯和各種業務邏輯,進行刪除。通過以上例子,是不是覺得SQL很能幫我們干可能涉及到的任務事情。

ok,大家有什麼好方法,多交流呀。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved