Синтаксис SQL с AS и ORDER BY во вложенных запросах - PullRequest
3 голосов
/ 08 февраля 2010

У меня есть запрос со следующим синтаксисом:

select x.a as a, x.b as b, x.c as c
from
  (select distinct a from foo
     order by y) as x
  left join zzz....
  left join yyy...;

Теперь я хочу вставить order by во внешний оператор выбора.

присоединяя его к концу - ему не нравится синтаксис, и помещая его перед явно допустимым синтаксисом as, но возвращает пустой результирующий набор, если пропустить order by, безусловно, возвращает результаты.

Есть теории?

Извините за имена переменных, но они на самом деле не важны - меня больше интересует размещение order by.

Ответы [ 3 ]

3 голосов
/ 08 февраля 2010

Order By следует после Where во внешнем Select.Если «Где» нет, вы поместите его после последнего селектора «Вкл» (X = X) в вашем объединении.

0 голосов
/ 08 февраля 2010

нельзя ставить после точки с запятой, должно быть до

select x.a as a, x.b as b, x.c as c
from
  (select distinct a from foo
     order by y) as x
  left join zzz....
  left join yyy...
order by <column list>;
0 голосов
/ 08 февраля 2010

Вы действительно имели в виду порядок по y (поле, не включенное в select) для вашего первого подзапроса? Это немного усложняет вашу проблему. Поле, по которому вы хотите упорядочить, должно быть включено в подзапрос, таким образом вы можете выполнить упорядочение во внешнем разделе.

select x.a as a, x.b as b, x.c as c
from
  (select distinct a from foo) as x
  left join zzz....
  left join yyy...
order by x.a

Если вам по какой-то причине вам нужен порядок по y, не могли бы вы объяснить свой вопрос немного лучше или включить фактический запрос, который вы пытаетесь получить.

...