Có nhiều cách để thực hiện việc này.
Bạn có thể sử dụng một truy vấn phụ:
SET @some_var = (SELECT COUNT(*) FROM mytable);
(giống như bản gốc của bạn, chỉ cần thêm dấu ngoặc đơn xung quanh truy vấn)
hoặc sử dụng cú pháp CHỌN VÀO để gán nhiều giá trị:
SELECT COUNT(*), MAX(col)
INTO @some_var, @some_other_var
FROM tab;
Cú pháp truy vấn phụ nhanh hơn một chút (tôi không biết tại sao) nhưng chỉ hoạt động để gán một giá trị duy nhất. Cú pháp select into cho phép bạn đặt nhiều giá trị cùng một lúc, vì vậy nếu bạn cần lấy nhiều giá trị từ truy vấn, bạn nên làm điều đó thay vì thực hiện truy vấn lặp đi lặp lại cho từng biến.
Cuối cùng, nếu truy vấn của bạn không trả về một hàng mà là một tập hợp kết quả, bạn có thể sử dụng con trỏ .