Một bí danh có thể được sử dụng trong danh sách chọn truy vấn để đặt tên khác cho cột. Bạn có thể sử dụng bí danh trong GROUP BY
, ORDER BY
hoặc HAVING
mệnh đề tham chiếu đến cột:
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 chuẩn không cho phép tham chiếu đến bí danh cột trong WHERE
mệnh đề. Hạn chế này được áp dụng vì khi WHERE
mệnh đề được đánh giá, giá trị cột có thể chưa được xác định. Ví dụ:truy vấn sau là bất hợp pháp:
SELECT id, COUNT(*) AS cnt FROM tbl_name
WHERE cnt > 0 GROUP BY id;
WHERE
mệnh đề xác định hàng nào nên được đưa vào GROUP BY
, nhưng nó đề cập đến bí danh của giá trị cột không được biết cho đến sau khi các hàng đã được chọn và được nhóm theo GROUP BY
.
Trong danh sách được chọn của một truy vấn, bí danh cột được trích dẫn có thể được chỉ định bằng cách sử dụng mã định danh hoặc các ký tự trích dẫn chuỗi:
SELECT 1 AS `one`, 2 AS 'two';
Ở những nơi khác trong câu lệnh, các tham chiếu được trích dẫn đến bí danh phải sử dụng trích dẫn định danh hoặc tham chiếu được coi là một chuỗi ký tự. Ví dụ:câu lệnh này nhóm theo các giá trị trong id cột, được tham chiếu bằng bí danh a
:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY `a`;
Nhưng câu lệnh này nhóm theo chuỗi chữ 'a' và sẽ không hoạt động như mong đợi:
SELECT id AS 'a', COUNT(*) AS cnt FROM tbl_name
GROUP BY 'a';
Nguồn: https://docs.oracle .com / cd / E17952_01 / refman-5.0-en / problem-with-alias.html