First, you cannot use ALIAS
on the WHERE
clause. You should be using the column,
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
WHERE SUBSTRING(rating, INSTR(rating,',') +1, +2) = '15'
The reason is as follows: the order of operation is SQL,
- FROM clause
- WHERE clause
- GROUP BY clause
- HAVING clause
- SELECT clause
- ORDER BY clause
the ALIAS
takes place on the SELECT
clause which is before the WHERE
clause.
if you really want to use the alias, wrap it in a subquery,
SELECT *
FROM
(
SELECT SUBSTRING(rating, INSTR(rating,',') +1, +2) AS val
FROM users
) TMP
WHERE val = '15'
Reference: http://stackoverflow.com/questions/14413867/mysql-select-as-in-where