Подтвердить что ты не робот

MySQL - выберите AS в ГДЕ

по какой-то причине это не работает:

select substring(rating, instr(rating,',') +1, +2) as val
from users where val = '15';

Дает эту ошибку: ERROR 1054 (42S22): Неизвестный столбец "val" в разделе "where"

Как мне это сделать?

4b9b3361

Ответ 1

Во-первых, вы не можете использовать ALIAS в предложении WHERE. Вы используете столбец,

SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
FROM   users 
WHERE  SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'

Причина такова: порядок работы - SQL,

  • Предложение FROM
  • Предложение WHERE
  • Предложение GROUP BY
  • Предложение HAVING
  • Предложение SELECT
  • Предложение ORDER BY

ALIAS выполняется в предложении SELECT, которое находится перед предложением WHERE.

если вы действительно хотите использовать псевдоним, оберните его в подзапрос,

SELECT *
FROM
    (
        SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
        FROM   users
    ) s
WHERE   val  = '15'

Ответ 2

val не определен, его просто псевдоним .do он вроде этого

   SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val 
   FROM   users 
   WHERE  SUBSTRING(rating, INSTR(rating,',') +1, +2) = 15