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

Gán kết quả SELECT vào biến tùy chỉnh trong MySQL

Giới thiệu

MySQL cho phép gán kết quả của một truy vấn SELECT vào biến người dùng (user-defined variable) bằng cú pháp SET @bien := (SELECT ...) hoặc SELECT @bien := cot FROM .... Biến này có hiệu lực trong suốt phiên làm việc (session).

Ví dụ minh họa: Lấy bản ghi cuối cùng (giả lập)

Bước 1: Tạo bảng và chèn dữ liệu

CREATE TABLE DemoTable2013 (Name VARCHAR(20));
INSERT INTO DemoTable2013 VALUES ('Chris'), ('David'), ('Mike'), ('Sam'), ('Bob');

Bước 2: Đếm tổng số dòng và gán vào biến @query

SET @query := (SELECT COUNT(*) FROM DemoTable2013);

Bước 3: Sử dụng biến để lấy bản ghi cuối (giảm dần từ tổng số dòng về 0)

SELECT Name
FROM DemoTable2013
WHERE (@query := @query - 1) = 0;

Kết quả:

+------+
| Name |
+------+
| Bob  |
+------+

Giải thích: Biến @query ban đầu là 5. Mệnh đề WHERE giảm giá trị biến đi 1 ở mỗi hàng duyệt qua. Khi biến bằng 0 (tức là hàng thứ 5), hàng đó được chọn. Đây là kỹ thuật "lấy hàng cuối" không dùng ORDER BY ... LIMIT 1 (tuy nhiên cách này phụ thuộc vào thứ tự lưu trữ vật lý, không đảm bảo đúng logic nghiệp vụ).

Cách tốt hơn để lấy hàng cuối:

SELECT Name FROM DemoTable2013 ORDER BY Name DESC LIMIT 1;
-- Hoặc nếu có cột ID tự tăng:
SELECT Name FROM DemoTable2013 ORDER BY Id DESC LIMIT 1;