Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Gán kết quả SELECT vào biến người dùng (user-defined variable) trong MySQL

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 session
  • SELECT ... 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ó @.