我有一个如下所示的查询:
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不能接受那里的空值。我觉得我应该能够对该列进行过滤,但我无法正确理解语法。
答案 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