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

Lưu kết quả SELECT vào biến trong MySQL

Cú pháp

Sử dụng biến user-defined (@ten_bien) gán từ subquery hoặc trực tiếp.

Cách 1: SET với subquery

Tạo bảng:

CREATE TABLE DemoTable631 (
    StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName VARCHAR(100)
);
INSERT INTO DemoTable631(StudentName) VALUES
('John Smith'), ('Adam Smith'), ('David Miller');

Lưu tên sinh viên ID=2 vào biến:

SET @fullName = (SELECT StudentName FROM DemoTable631 WHERE StudentId = 2);

Hiển thị biến:

SELECT @fullName;

Kết quả: Adam Smith.

Cách 2: SELECT INTO (trong stored program)

DELIMITER //
CREATE PROCEDURE GetStudentName(IN p_id INT, OUT p_name VARCHAR(100))
BEGIN
    SELECT StudentName INTO p_name
    FROM DemoTable631
    WHERE StudentId = p_id;
END //
DELIMITER ;

Gọi:

CALL GetStudentName(2, @name);
SELECT @name;

Cách 3: SELECT ... INTO @var (ngoài stored program)

SELECT StudentName INTO @fullName
FROM DemoTable631
WHERE StudentId = 2;

Lưu ý quan trọng

  • Subquery trong SET phải trả về đúng 1 dòng, 1 cột. Nếu 0 dòng → NULL, nếu >1 dòng → ERROR 1242.
  • Biến @var là session-scoped (sống suốt connection).
  • Không cần DECLARE cho @var (khác với local variable trong stored program).
  • Kiểu dữ liệu tự động suy luận từ giá trị gán.

Ứng dụng

  • Truyền giá trị giữa các statement trong cùng session.
  • Dynamic SQL: SET @sql = CONCAT('SELECT * FROM ', @table); PREPARE stmt FROM @sql; EXECUTE stmt;.
  • Lưu cấu hình, counter, flag trong script SQL dài.