Giải pháp: Alias với AS
Sử dụng AS (hoặc bỏ qua) để đặt tên cho biểu thức/cột tính toán trong SELECT.
Ví dụ minh họa
Tạo bảng
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20)
);
mysql> INSERT INTO DemoTable(Name) VALUES('John'), ('Robert'), ('David');
Truy vấn tạo cột CountryName cố định
mysql> SELECT Id, Name, 'US' AS CountryName FROM DemoTable;
Kết quả
+----+--------+-------------+
| Id | Name | CountryName |
+----+--------+-------------+
| 1 | John | US |
| 2 | Robert | US |
| 3 | David | US |
+----+--------+-------------+
Các cách viết Alias
| Cú pháp | Ví dụ | Chuẩn SQL |
AS alias | 'US' AS CountryName | Có (khuyến nghị) |
alias | 'US' CountryName | Có (MySQL, PostgreSQL) |
= alias | CountryName = 'US' | Không (T-SQL style) |
Các loại biểu thức có thể alias
-- Hằng số
SELECT 'US' AS country
-- Cột
SELECT Name AS full_name
-- Biểu thức toán học
SELECT Price * 1.1 AS price_with_tax
-- Hàm
SELECT UPPER(Name) AS upper_name
-- CASE
SELECT CASE WHEN Age >= 18 THEN 'Adult' ELSE 'Minor' END AS age_group
-- Subquery
SELECT (SELECT COUNT(*) FROM orders WHERE orders.user_id = users.id) AS order_count
Sử dụng Alias trong các mệnh đề khác
| Mệnh đề | Cho phép Alias | Lưu ý |
| ORDER BY | ✅ Có | MySQL, PostgreSQL, SQL Server |
| GROUP BY | ✅ Có | MySQL, PostgreSQL (không SQL Server) |
| HAVING | ✅ Có | MySQL, PostgreSQL |
| WHERE | ❌ Không | Chưa tính toán lúc WHERE chạy |
| JOIN ON | ❌ Không | Cần repeat expression hoặc subquery |
Best Practice
- Luôn dùng
AS cho rõ ràng
- Alias không chứa khoảng trắng/ky tự đặc biệt (hoặc dùng backtick:
AS `Full Name`)
- Đặt tên có ý nghĩa:
total_amount thay vì ta
- Tránh trùng tên cột gốc gây nhầm lẫn