根据多条件查询临时表 想得到不同结果集的方法

 更新时间:2009年11月08日 23:44:44   作者:  
很多情况下,需要采用多个参数来查询一张临时表,每个参数都要求得到不同的临时表结果集。而往往某些参数并不对应这张临时表中的字段,而是对应与该临时表ID关联的另一张表的字段。
当我写下如下sql语句时,我得到了输入@c参数时想得到的结果集。
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
假如我已经通过@a,@b得到了一种@tb结果集,当我再次使用@c进行条件判断时,这样就会覆盖刚才的结果。
可以采用“删除不符合条件的记录”的方法来做,由于@tb已经得到了@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 触发器实例详解

    SQL Server 触发器实例详解

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的,接下来本文通过实例详解sqlserver触发器,对sqlserver触发器相关知识感兴趣的朋友一起学习吧
    2016-01-01
  • SQL Server误区30日谈 第13天 在SQL Server 2000兼容模式下不能使用DMV

    SQL Server误区30日谈 第13天 在SQL Server 2000兼容模式下不能使用DMV

    对于兼容模式已经存在了很多误解。80的兼容模式的数据库是否意味着能够附加或恢复到SQL Server 2000数据库?当然不是
    2013-01-01
  • SQL Server把某个字段的数据用一条语句转换成字符串

    SQL Server把某个字段的数据用一条语句转换成字符串

    这篇文章主要介绍了SQL Server把某个字段的数据用一条语句转换成字符串,本文讲解使用一条语句把字段中的数据查询出来并以指定分割符组成字符串,需要的朋友可以参考下
    2015-07-07
  • sql语句中临时表使用实例详解

    sql语句中临时表使用实例详解

    当需要的结果需要经过多次处理后才能最终得到我们需要的结果时,就可以使用临时表,这里临时表就起到了一个中间处理的作用,实现了分步处理,简化了问题,这篇文章主要介绍了sql语句中临时表使用方法,需要的朋友可以参考下
    2023-02-02
  • SqlServer公用表表达式(CTE)的具体使用

    SqlServer公用表表达式(CTE)的具体使用

    CTE是一种临时命名的结果集,,它在执行查询时存在,并且只在该查询执行期间有效,本文主要介绍了SqlServer公用表表达式的具体使用,感兴趣的可以了解一下
    2024-08-08
  • Sql Server 2012完全卸载方法 只需8步轻松卸载

    Sql Server 2012完全卸载方法 只需8步轻松卸载

    这篇文章主要为大家详细介绍了Sql Server 2012完全卸载方法,八步轻松实现Sql Server 2012完全卸载,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • SQL百万千万级最大表添加字段的实现

    SQL百万千万级最大表添加字段的实现

    本文主要介绍了SQL百万千万级最大表添加字段,需要特别小心,以避免长时间的表锁定和潜在的性能问题,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • sql coalesce函数的具体使用

    sql coalesce函数的具体使用

    这篇文章主要介绍了sql coalesce函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • SQL查询字段被包含语句

    SQL查询字段被包含语句

    说到SQL的模糊查询,最先想到的,应该就是like关键字。当我们需要查询包含某个特定字段的数据时,往往会使用 ‘%关键字%’ 查询的方式。具体代码示例大家参考下本文
    2017-07-07
  • 利用 SQL Server 过滤索引提高查询语句的性能分析

    利用 SQL Server 过滤索引提高查询语句的性能分析

    本文就给大家介绍一下 Microsoft SQL Server 中的过滤索引功能,本文通过场景模拟分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07

最新评论