Een alias kan worden gebruikt in een selectielijst voor query's om een kolom een andere naam te geven. U kunt de alias gebruiken in GROUP BY
, ORDER BY
, of HAVING
clausules om naar de kolom te verwijzen:
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;
Standaard SQL verbiedt verwijzingen naar kolomaliassen in een WHERE
clausule. Deze beperking wordt opgelegd omdat wanneer de WHERE
clausule wordt geëvalueerd, is de kolomwaarde mogelijk nog niet bepaald. De volgende zoekopdracht is bijvoorbeeld illegaal:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
De WHERE
clausule bepaalt welke rijen moeten worden opgenomen in de GROUP BY
clausule, maar het verwijst naar de alias van een kolomwaarde die pas bekend is nadat de rijen zijn geselecteerd, en gegroepeerd op de GROUP BY
.
In de selectielijst van een zoekopdracht kan een alias van een kolom tussen aanhalingstekens worden opgegeven met behulp van een id of tekenreeks tussen aanhalingstekens:
SELECT 1 AS `one`, 2 AS 'two';
Elders in de instructie moeten geciteerde verwijzingen naar de alias id-aanhalingstekens gebruiken, anders wordt de verwijzing behandeld als een letterlijke tekenreeks. Deze instructie groepeert bijvoorbeeld op de waarden in kolom-ID, waarnaar wordt verwezen met de alias a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Maar deze instructie groepeert op de letterlijke tekenreeks 'a' en werkt niet zoals verwacht:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Bron:https://docs.oracle .com/cd/E17952_01/refman-5.0-en/problemen-met-alias.html