Можно ли использовать псевдоним в операторе Where в mysql?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

119
задан dreftymac 30 May 2019 в 21:34
поделиться

2 ответа

Вы могли использовать пункт НАЛИЧИЯ, который может видеть псевдонимы, например,

 HAVING avg_rating>5

, но в, где пункт необходимо будет повторить выражение, например,

 WHERE (sum(reviews.rev_rating)/count(reviews.rev_id))>5

, НО! Не все выражения будут позволены - использование агрегирующейся функции как СУММА не будет работать, в этом случае необходимо будет использовать пункт НАЛИЧИЯ.

От MySQL Manual :

Это не допустимо для обращения к псевдониму столбца в операторе Where, потому что значение столбца еще не могло бы быть определено, когда оператор Where выполняется. См. Раздел B.1.5.4, “Problems со столбцом Aliases” .

222
ответ дан Paul Dixon 24 November 2019 в 01:48
поделиться

Dunno, если это работает в mysql, но использующий sqlserver Вы, может также просто обернуть его как:

select * from (
  -- your original query
  select .. sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating 
  from ...) Foo
where Foo.avg_rating ...
31
ответ дан Torbjörn Gyllebring 24 November 2019 в 01:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: