SQL凡在嵌套查询
筛选我有一个查询,看起来像这样:SQL凡在嵌套查询
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不能在那里接受空值。我觉得我应该能够在该列上进行过滤,但我无法完全理解语法。
结果工作是双重嵌套查询。
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
您可能需要对此查询进行双重嵌套。
而且,取决于你的DBMS,但你应该使用两个表没有参加被检查C IS NOT NULL
。如果你告诉我们你想达到的目标,我们可以提供更好的帮助。
工程就像一个魅力。谢谢! – captncraig 2010-08-30 17:20:24
嗯。不太清楚这意味着什么。编辑问题澄清。 – captncraig 2010-08-30 17:35:17
@CaptnCraig:RE:''像一个魅力一样工作,谢谢!''这个问题是否应答? – 2010-08-31 16:56:06
编辑声明以更好地显示目的。 Y和Z都与A有关.A有许多Z和许多Y.我正在创建并填充一个新表以使Y成为Z的子项。我将所有现有的Y添加到其关联的A的第一个Z中,但是如果A没有Z,我只是忽略Y. – captncraig 2010-08-30 17:31:09
这只是使用只是字母混淆,呵呵。 – captncraig 2010-08-30 17:31:55