SQL Где фильтровать по вложенному запросу - PullRequest
0 голосов
/ 30 августа 2010

У меня есть запрос, который выглядит следующим образом:

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 является недопустимым именем столбца.используя yc, к тому же результату.Мне не нужно вставлять строки, в которых этот гигантский внутренний запрос равен нулю, потому что tblX не может принимать там пустые значения.Я чувствую, что должен быть в состоянии фильтровать по этому столбцу, но я не совсем понимаю синтаксис.

Ответы [ 2 ]

2 голосов
/ 30 августа 2010

Вероятно, вам потребуется двойное вложение этого запроса.

Кроме того, это зависит от вашей СУБД, но вы должны проверять C IS NOT NULL

Вы используете две таблицы без объединения.Если вы сообщите нам, чего пытаетесь достичь, мы можем помочь вам лучше.

0 голосов
/ 13 сентября 2010

В итоге получилось двойное вложение запроса.

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
...