Псевдоним може да се използва в списък за избор на заявка, за да се даде различно име на колона. Можете да използвате псевдонима в GROUP BY
, ORDER BY
или HAVING
клаузи за препратка към колоната:
SELECT SQRT(a*b) AS root FROM tbl_name
GROUP BY root HAVING root > 0;
SELECT id, COUNT(*) AS cnt FROM tbl_name
GROUP BY id HAVING cnt > 0;
SELECT id AS 'Customer identity' FROM tbl_name;
Стандартният SQL не позволява препратки към псевдоними на колони в WHERE
клауза. Това ограничение е наложено, защото когато WHERE
клауза е оценена, стойността на колоната може все още да не е определена. Например следната заявка е незаконна:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
WHERE
клаузата определя кои редове трябва да бъдат включени в GROUP BY
клауза, но се отнася до псевдонима на стойност на колона, която не е известна, докато редовете не бъдат избрани и групирани по GROUP BY
.
В списъка за избор на заявка може да се укаже псевдоним на колона в кавички, като се използват знаци за кавички на идентификатор или низ:
SELECT 1 AS `one`, 2 AS 'two';
На други места в израза цитираните препратки към псевдонима трябва да използват кавички на идентификатор или препратката се третира като низов литерал. Например този оператор се групира по стойностите в колона id, към които се използва псевдонимът a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Но този оператор се групира по буквалния низ 'a' и няма да работи според очакванията:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Източник:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problems-with-alias.html