代码之家  ›  专栏  ›  技术社区  ›  captncraig

对嵌套查询进行筛选的SQL位置

  •  0
  • captncraig  · 技术社区  · 14 年前

    我有这样一个查询:

    Insert Into tblX (a,b,c)
    Select x as a, y as b
       (select top 1 whatever from tblZ as z where z.aID  = y.aID order by z.s desc) as c
    from tblY as y
    where y.foo = 'bar'
    AND c <> NULL
    

    我不需要在巨大的内部查询为null的地方插入行,因为tblX不能在那里接受null。我觉得我应该可以过滤那个列,但我不能完全得到正确的语法。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Raj More    14 年前

    您可能需要双重嵌套此查询。

    另外,取决于您的DBMS,但您应该检查 C IS NOT NULL

    您正在使用两个没有联接的表。如果你告诉我们你想达到什么目的,我们可以提供更好的帮助。

        2
  •  0
  •   captncraig    14 年前

    最终起作用的是双重嵌套查询。

    Insert Into tblX (a,b,c)
      Select a,b,c from
        (select x as a,
               y as b,
         (select top 1 whatever from tblZ as z where z.aID  = y.aID order by z.s desc) as c
          from tblY as y where y.foo = 'bar') as foobar
      Where c IS NOT NULL