MySQL cho phép gán kết quả truy vấn vào biến session (user-defined variable) với cú pháp SELECT ... INTO @variable_name. Biến này mang prefix @.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100)
);
Chèn dữ liệu:
mysql> insert into DemoTable(Name) values('Chris');
mysql> insert into DemoTable(Name) values('Robert');
mysql> insert into DemoTable(Name) values('David');
Hiển thị dữ liệu:
mysql> select * from DemoTable;
Kết quả:
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | David | +----+--------+
Gán Name của Id=3 vào biến @FirstName
mysql> select Name into @FirstName from DemoTable where Id=3;
Kết quả: Query OK, 1 row affected
Kiểm tra giá trị biến
mysql> select @FirstName;
Kết quả:
+------------+ | @FirstName | +------------+ | David | +------------+
Giải thích:
@FirstName: Biến user-defined (session variable), tồn tại suốt sessionSELECT ... INTO @var: Chỉ hoạt động nếu truy vấn trả về **đúng 1 hàng**. Nếu 0 hàng hoặc >1 hàng → lỗi- Có thể gán nhiều biến:
SELECT Id, Name INTO @id, @name FROM ...
Ứng dụng: Truyền giá trị giữa các truy vấn trong cùng session, lưu tạm ID vừa insert (thay LAST_INSERT_ID()), xây dựng dynamic SQL, stored procedure logic phức tạp.
Khác với biến local trong SP: DECLARE var INT; (chỉ trong BEGIN...END block), không có @.