需求描述:欲實作列印功能,一些記錄項,即使内容項沒有資料,也要保留其編号,并空出這一行;資料庫在采集資料時,隻采集了那些内容項不為空的資料,即隻有一個包含<id><content>均不為空的表。
直覺想法:設計一個和資料庫中采集到的資料的那個表結構一樣的表table2,隻包含全部的〈id〉值,内容項由已有的Table1來填充。
解決方案:删除Table2中那些<id>包含在Table1中的行集,再和Table1合并。但是因為如果實際真的删除Table2中的記錄,則會在下一次列印時丢失部分的<id>值,因為在一次列印後已經删除了一部分,故使用臨時表。
執行個體:假設一個班級30個學生,列印學生成績,有些學生成績是空,但是仍要保留其姓名的位置;而資料庫中已有的表Student行集中,隻有那些已經有成績的學生的記錄。現在建立立一個與Student表結構完全相同的表Student2,Student2中包含所有的學生姓名即可。
SQL代碼:
IF EXISTS (SELECT * FROM tempdb.dbo.sysobjects WHERE [name]= '##T') DROP TABLE ##T
select * into ##T from Student2
Delete from ##T where StudentID in
(
select StudentID from Student
)
select * from ##T
union
select * from Student
本文轉自 august 51CTO部落格,原文連結:http://blog.51cto.com/august/6974,如需轉載請自行聯系原作者