在ms sql 200中,获取一个表中的系列值,而不是另一个表中的系列值

在ms sql 200中,获取一个表中的系列值,而不是另一个表中的系列值,sql,sql-server,Sql,Sql Server,我有两张桌子,我的第一张桌子看起来像这样 tblRecords Series_Start Series_End 1001 1095 还有我的第二张桌子 tblDetail Series_StartUsed Series_EndUsed 1011 1021 1051 1060 我的目标是选择tblRecords中的系列,而不是tblDetail中的系列。样本输出为 Series_Start

我有两张桌子,我的第一张桌子看起来像这样

tblRecords

Series_Start    Series_End
1001            1095
还有我的第二张桌子

tblDetail

Series_StartUsed    Series_EndUsed
1011                 1021
1051                 1060 
我的目标是选择tblRecords中的系列,而不是tblDetail中的系列。样本输出为

Series_Start    Series_End
1001            1010
1031            1050
1061            1095

您知道什么是正确的SQL脚本吗?

如果我正确理解您的需求,此查询可能无法测试:

select zx.Series_start, zx.Series_End from (
    select r.Series_start, 
           r.Series_End, 
           case when (select 1 from tblDetail d where (d.Series_StartUsed <= r.Series_End and (d.Series_EndUsed >= r.Series_start or d.Series_StartUsed >= r.Series_Start))) is null then 0 else 1 end as isUsed
    from tblRecords r) zx
where zx.isUsed = 0
我可能已经弄乱了第三个选择变量的实际情况,所以如果需要的话可以使用它,因为我现在没有办法轻松地测试它


此外,上面的查询效率非常低,因此如果您想将其作为常规操作用于超大数据集,那么它是不合适的。如果要这样做,您可能需要编写一个存储过程。

stil with error当子查询没有引入EXISTS时,只能在select列表中指定一个表达式。