根據(jù)多條件查詢臨時表 想得到不同結果集的方法
更新時間:2009年11月08日 23:44:44 作者:
很多情況下,需要采用多個參數(shù)來查詢一張臨時表,每個參數(shù)都要求得到不同的臨時表結果集。而往往某些參數(shù)并不對應這張臨時表中的字段,而是對應與該臨時表ID關聯(lián)的另一張表的字段。
當我寫下如下sql語句時,我得到了輸入@c參數(shù)時想得到的結果集。
select * from @tb t where t.id in (select id from tb where f = @c)
但如果有@a,@b,@c,而它們分別想從@tb中得到不同的結果集,例如
if @a is not null
begin
--得到@a想得到的
end
if @b is not null
begin
--得到@b想得到的
end
if @c is not null
begin
--得到@c想得到的
end
這樣做好像沒什么問題,但如果@a和@b是一起的,甚至是@a,@b,@c,@d,@e,@f等等N多種條件組合,這樣就不好辦了。所以必須先build好@tb,最后一次性查詢
--構造@tb
select * from @tb
假如我已經(jīng)通過@a,@b得到了一種@tb結果集,當我再次使用@c進行條件判斷時,這樣就會覆蓋剛才的結果。
可以采用“刪除不符合條件的記錄”的方法來做,由于@tb已經(jīng)得到了@a,@b想得到的結果,所以只要刪除掉不符合@c的結果就行了。完。
if @c is not null
begin
delete c from @tb c where c.id not in (select id from tb where f = @c)
end
select * from @tb
select * from @tb t where t.id in (select id from tb where f = @c)
但如果有@a,@b,@c,而它們分別想從@tb中得到不同的結果集,例如
復制代碼 代碼如下:
if @a is not null
begin
--得到@a想得到的
end
if @b is not null
begin
--得到@b想得到的
end
if @c is not null
begin
--得到@c想得到的
end
這樣做好像沒什么問題,但如果@a和@b是一起的,甚至是@a,@b,@c,@d,@e,@f等等N多種條件組合,這樣就不好辦了。所以必須先build好@tb,最后一次性查詢
--構造@tb
select * from @tb
假如我已經(jīng)通過@a,@b得到了一種@tb結果集,當我再次使用@c進行條件判斷時,這樣就會覆蓋剛才的結果。
可以采用“刪除不符合條件的記錄”的方法來做,由于@tb已經(jīng)得到了@a,@b想得到的結果,所以只要刪除掉不符合@c的結果就行了。完。
復制代碼 代碼如下:
if @c is not null
begin
delete c from @tb c where c.id not in (select id from tb where f = @c)
end
select * from @tb
您可能感興趣的文章:
- sql server 臨時表 查找并刪除的實現(xiàn)代碼
- SQLServer中臨時表與表變量的區(qū)別分析
- sqlserver 臨時表的用法
- sqlserver 臨時表 Vs 表變量 詳細介紹
- sqlserver 動態(tài)創(chuàng)建臨時表的語句分享
- 關于sqlserver 2005 使用臨時表的問題( Invalid object name #temptb)
- mysql復制中臨時表的運用技巧
- mysql 臨時表 cann''t reopen解決方案
- SQL Server 向臨時表插入數(shù)據(jù)示例
- 淺析SQL server 臨時表
- MySQL使用臨時表加速查詢的方法
- sql server創(chuàng)建臨時表的兩種寫法和刪除臨時表
- 對比Oracle臨時表和SQL Server臨時表的不同點
相關文章
SQL Server誤區(qū)30日談 第13天 在SQL Server 2000兼容模式下不能使用DMV
對于兼容模式已經(jīng)存在了很多誤解。80的兼容模式的數(shù)據(jù)庫是否意味著能夠附加或恢復到SQL Server 2000數(shù)據(jù)庫?當然不是2013-01-01
SQL Server把某個字段的數(shù)據(jù)用一條語句轉換成字符串
這篇文章主要介紹了SQL Server把某個字段的數(shù)據(jù)用一條語句轉換成字符串,本文講解使用一條語句把字段中的數(shù)據(jù)查詢出來并以指定分割符組成字符串,需要的朋友可以參考下2015-07-07
Sql Server 2012完全卸載方法 只需8步輕松卸載
這篇文章主要為大家詳細介紹了Sql Server 2012完全卸載方法,八步輕松實現(xiàn)Sql Server 2012完全卸載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02

