Kể từ MySQL 3. 23. 6, bạn có thể gán một giá trị được trả về bởi câu lệnh
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
8 cho một biến, sau đó tham khảo biến đó sau trong phiên mysql của bạn. Điều này cung cấp một cách để lưu kết quả được trả về từ một truy vấn, sau đó tham khảo kết quả đó sau trong các truy vấn khác. Cú pháp gán giá trị cho biến SQL trong truy vấn mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
8 là mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
0mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
1 mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
2 mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
3, trong đó mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
1 là tên biến và mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
3 là giá trị mà bạn đang truy xuất. Biến có thể được sử dụng trong các truy vấn tiếp theo bất cứ nơi nào một biểu thức được cho phép, chẳng hạn như trong mệnh đề mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
6 hoặc trong câu lệnh mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
7Một tình huống phổ biến trong đó các biến SQL có ích là khi bạn cần thực hiện các truy vấn liên tiếp trên nhiều bảng có liên quan với nhau bằng một giá trị khóa chung. Giả sử bạn có bảng
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
8 với cột mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
9 xác định từng khách hàng và bảng mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
00 cũng có cột mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
9 để cho biết mỗi đơn đặt hàng được liên kết với khách hàng nào. Nếu bạn có tên khách hàng và bạn muốn xóa bản ghi khách hàng cũng như tất cả các đơn đặt hàng của khách hàng, bạn cần xác định giá trị mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
9 phù hợp cho khách hàng đó, sau đó xóa bản ghi khỏi cả hai bảng mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
8 và mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
00 khớp với ID. Một cách để thực hiện việc này là trước tiên hãy lưu giá trị ID vào một biến, sau đó tham khảo biến đó trong các câu lệnh mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
05. []mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
6Câu lệnh
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
8 trước gán một giá trị cột cho một biến, nhưng các biến cũng có thể được gán giá trị từ các biểu thức tùy ý. Câu lệnh sau xác định tổng cao nhất của các cột mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
07 và mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
08 trong bảng mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
09 và gán nó cho biến mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
00mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
Một cách sử dụng khác cho biến là lưu kết quả từ
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
01 sau khi tạo bản ghi mới trong bảng có cột mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
02mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
0mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
01 trả về giá trị của giá trị mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
02 mới. Bằng cách lưu nó vào một biến, bạn có thể tham khảo giá trị nhiều lần trong các câu lệnh tiếp theo, ngay cả khi bạn đưa ra các câu lệnh khác tạo ra các giá trị mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
02 của riêng chúng và do đó thay đổi giá trị được trả về bởi mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
01. Điều này được thảo luận thêm trong Chương 11Các biến SQL giữ các giá trị đơn. Nếu bạn gán một giá trị cho một biến bằng câu lệnh trả về nhiều hàng, thì giá trị từ hàng cuối cùng sẽ được sử dụng
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
0Nếu câu lệnh không trả về hàng nào, thì không có phép gán nào diễn ra và biến vẫn giữ nguyên giá trị trước đó của nó. Nếu biến chưa được sử dụng trước đó, giá trị đó là
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
07mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
1Để đặt một biến rõ ràng thành một giá trị cụ thể, hãy sử dụng câu lệnh
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
08. Cú pháp mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
08 sử dụng mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
10 thay vì mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
2 để gán giá trịmysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
6Giá trị của một biến nhất định sẽ tồn tại cho đến khi bạn gán cho nó một giá trị khác hoặc cho đến khi kết thúc phiên mysql của bạn, tùy theo điều kiện nào đến trước
Tên biến có phân biệt chữ hoa chữ thường
mysql> SELECT @max_limbs := MAX[arms+legs] FROM limbs;
7Các biến SQL chỉ có thể được sử dụng khi các biểu thức được cho phép, không phải khi các hằng số hoặc mã định danh bằng chữ phải được cung cấp. Mặc dù thật hấp dẫn khi cố gắng sử dụng các biến cho những thứ như tên bảng, nhưng nó không hoạt động. Ví dụ: bạn có thể thử tạo một tên bảng tạm thời bằng cách sử dụng một biến như sau, nhưng kết quả chỉ là một thông báo lỗi