У меня есть запрос с где Cluse так:MySQL: Именование скалярные подзапросы в котором положение
WHERE (scalar-subquery1) > (scalar-subquery2)
И это прекрасно работает. Здесь может быть любой оператор вместо «больше чем» («>») между запросами.
Теперь я хочу, чтобы дать имена для этих запросов, так что я могу ссылаться на них в пункте выбора, поэтому я попытался:
SELECT q1,q2 ... WHERE (scalar-subquery1) as q1 > (scalar-subquery2) as q2
Но есть ошибка синтаксиса сообщается между as q1
и >
оператором. Любой способ обойти эту проблему?
К сожалению, это взаимосвязанные подзапросы, которые зависят от другой таблицы из предложения FROM. Если я поместил эти запросы в предложение FROM, я получаю ошибки об неизвестном столбце, потому что теперь объявленная таблица не отображается для этих запросов. –
Я не поклонник коррелированных подзапросов. Однако третий вариант должен делать то, что вы хотите. –
@PiotrSobczyk: ваш скалярный подзапрос в WHERE также является коррелированным, если он зависит от таблиц в предложении FROM. Неважно, помещаете ли вы SELECT или WHERE, если вам все равно нужно оценить его по каждой строке, создаваемой предложением FROM. –