Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо използването на псевдоним на колона в същата селекция не се поддържа в Oracle и Mysql?

Псевдоним може да се използва в списък за избор на заявка, за да се даде различно име на колона. Можете да използвате псевдонима в 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Попълване на събития в пълен календар на javascript от базата данни

  2. Опитвате се да получите свойство на необект

  3. Белия списък с диапазони на IP адреси с помощта на cPanel

  4. как да запазя enum стойност в DB с Hibernate?

  5. Синхронизиране на данни между MySQL и MongoDB