Cách 1: Dùng SET
SET @tenBien = (SELECT cot FROM bang WHERE dieu_kien);
Cách 2: Dùng SELECT ... INTO
SELECT cot INTO @tenBien FROM bang WHERE dieu_kien;
Ví dụ hoàn chỉnh
Tạo bảng và dữ liệu
mysql> CREATE TABLE tempVariableAssignment (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20),
Age INT
);
mysql> INSERT INTO tempVariableAssignment(Name,Age) VALUES
('John',25),('Carol',26),('Sam',28),('David',19),('Bob',23);
Gán biến với SET
mysql> SET @findAge = (SELECT Age FROM tempVariableAssignment WHERE Id=4); Query OK, 0 rows affected (0.02 sec) mysql> SELECT @findAge; +----------+ | @findAge | +----------+ | 19 | +----------+
Gán biến với SELECT INTO
mysql> SELECT Age INTO @anotherAge FROM tempVariableAssignment WHERE Id=4; Query OK, 1 row affected (0.00 sec) mysql> SELECT @anotherAge; +-------------+ | @anotherAge | +-------------+ | 19 | +-------------+
Đặc điểm biến người dùng (User-defined variables)
- Tiền tố
@(ví dụ:@findAge) - Phạm vi: phiên làm việc hiện tại (session)
- Không cần khai báo kiểu dữ liệu
- Có thể dùng trong các truy vấn sau đó trong cùng session
Lưu ý: Subquery trong SET phải trả về đúng 1 giá trị (single row, single column).