Почему я не могу использовать определенную переменную в предложении Where - PullRequest
0 голосов
/ 08 ноября 2010

Мой запрос:

SELECT 
  offer, 
  (SELECT 
        AVG(offer) 
   FROM 
        project_bids
  ) as var1 
FROM 
  `project_bids` 
WHERE 
  offer > var1

Это приводит к ошибке "# 1054 - Неизвестный столбец 'var1' в 'where clause'". Кто-нибудь может объяснить, почему выдает эту ошибку? (Я знаю, что работает SQL, но я хочу узнать, почему это не удается)

Ответы [ 3 ]

2 голосов
/ 08 ноября 2010

Последовательность выполнения предложений оператора SELECT упоминается здесь:

http://blog.sqlauthority.com/2007/06/14/sql-server-easy-sequence-of-select-from-join-where-group-by-having-order-by/

Псевдоним столбца не может использоваться ни в одном пункте, кроме последнего пункта "ORDER BY".

1 голос
/ 08 ноября 2010

вам нужно было бы переместить "var1" из where и вставить в него выражение having

оператор where не имеет доступа к столбцам, созданным в операторе select

0 голосов
/ 08 ноября 2010

Запишите это как показано ниже:

ВЫБРАТЬ предложение, (ВЫБЕРИТЕ AVG (предложение) ОТ проектных заявок) как var1 ОТ project_bids ГДЕ предложение> (ВЫБРАТЬ AVG (предложение) ОТ проектных заявок)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...