SQL在嵌套查询上过滤的位置

时间:2010-08-30 17:10:47

标签: sql sql-server-2000

我有一个如下所示的查询:

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

问题是最后一行。 它告诉我c是无效的列名。同样使用y.c,得到相同的结果。 我不需要插入那个巨大的内部查询为空的行,因为tblX不能接受那里的空值。我觉得我应该能够对该列进行过滤,但我无法正确理解语法。

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

最终工作的是对查询进行双重嵌套。

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