Trang chủ » MySQL » Hướng dẫn lưu các kết quả truy vấn vào biến sử dụng SELECT INTO Variables

MySQL

Hướng dẫn lưu các kết quả truy vấn vào biến sử dụng SELECT INTO Variables

09/12/2023

Bài viết này mình sẽ hướng dẫn các bạn lưu các kết quả truy vấn vào biến sử dụng SELECT INTO variables

Cú pháp MySQL SELECT INTO Variable


SELECT 
    c1, c2, c3, ...
INTO 
    @v1, @v2, @v3,...
FROM 
    table_name
WHERE 
    condition;

Giải thích cú pháp:

  • c1, c2, và c3 là các cột hoặc biểu thức mà bạn muốn select và lưu vào biến.
  • @v1, @v2, và @v3 là các biến lưu giá trị của c1, c2 và c3.

Số lượng biến phải giống số lượng cột hoặc biểu thức. Thêm nữa là truy vấn phải trả về 0 hoặc 1 row.

Nếu truy vấn trả về 0 row, MySQL sẽ báo warning và giá trị biến không hề thay đổi.

Trong trường hợp truy vấn trả về nhiều row, MySQL báo 1 error. Và để đảm bảo truy vấn lúc nào cũng trả về 1 row, thì bạn sử dụng LIMIT 1.

Ví dụ sử dụng MySQL SELECT INTO Variable

Chúng ta sẽ sử dụng bảng customers để làm ví dụ:

Ví dụ MySQL SELECT INTO single variable

Ví dụ sau lấy city của khách hàng có number là 103 và lưu vào biến @city:


SELECT 
    city
INTO
    @city
FROM 
    customers
WHERE 
    customerNumber = 103;

Xem giá tị biến @city:


SELECT 
    @city;

Ví dụ MySQL SELECT INTO multiple variables

Để lưu nhiều giá trị vào nhiều biến, bạn sử dụng dấu phẩy để tách biệt. Ví dụ sau tìm kiếm city và country của khách hàng có number là 103 và lưu vào 2 biến tương ứng là @city và @country:


SELECT 
    city,
    country 
INTO
    @city,
    @country
FROM 
    customers
WHERE 
    customerNumber = 103;

Xem giá trị 2 biến @city và @country:


SELECT 
    @city, 
    @country;

Ví dụ MySQL SELECT INTO variable – multiple rows

Lệnh sau sẽ báo error vì truy vấn trả về nhiều rows:


SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103;

Kết quả:


Error Code: 1172. Result consisted of more than one row

Để sửa lỗi, thì sử dụng LIMIT 1:


SELECT 
    creditLimit
INTO
    @creditLimit
FROM 
    customers
WHERE 
    customerNumber > 103
LIMIT 1;

Như vậy là các bạn có thể sử dụng MySQL SELECT INTO variable để lưu các kết quả trong truy vấn và lưu vào biến, để sử dụng cho lần sau.

Hy vọng bài viết hữu ích cho các bạn.

 

Bài viết liên quan


Có nhiều loại dữ liệu khác nhau được hỗ trợ trong MySQL. Trong số đó đôi khi chúng ta cần dùng đến kiểu dữ liệu DATE để lưu trữ giá trị dữ liệu. Kiểu dữ liệu DATE được sử dụng cho các giá trị có phần ngày nhưng không có phần thời gian.

22:38 . 10/01/2024

Hàm WEEKDAY() trong MySQL được sử dụng để tìm giá trị ngày trong tuần cho một ngày cụ thể. Nếu ngày là NULL thì hàm WEEKDAY() sẽ trả về NULL. Ngược lại, nó trả về chỉ mục cho một ngày, tức là 0 cho Thứ Hai, 1 cho Thứ Ba,... 6 cho Chủ Nhật.

22:38 . 30/12/2023

Hàm SEC_TO_TIME() trong MySQL được sử dụng để chuyển đổi một giá trị thời gian (trong đơn vị giây) thành dạng chuỗi thời gian.

22:33 . 30/12/2023

Hàm YEARWEEK() trong MySQL được sử dụng để trả về một số nguyên đại diện cho tuần trong năm, dựa trên một giá trị ngày hoặc ngày/tháng cung cấp

22:30 . 30/12/2023

Hàm YEAR() trong MySQL được sử dụng để trích xuất phần năm từ một giá trị ngày hoặc ngày/tháng

22:10 . 30/12/2023

Hàm LTRIM() trong MySQL được sử dụng để loại bỏ các ký tự khoảng trắng từ phía bên trái (bắt đầu) của một chuỗi ký tự.

22:03 . 30/12/2023

Hàm DAYOFWEEK() trong MySQL được sử dụng để trả về một số nguyên đại diện cho ngày trong tuần (từ 1 đến 7), với Chủ nhật là ngày đầu tiên (1) và Thứ Bảy là ngày cuối cùng (7).

09:01 . 30/12/2023

Hàm DATE_SUB() trong MySQL được sử dụng để trừ một khoảng thời gian cụ thể từ một giá trị ngày/tháng cung cấp.

08:52 . 30/12/2023

Hàm DATE_FORMAT() trong MySQL được sử dụng để định dạng một ngày cụ thể theo giá trị định dạng đã cho, tức là, một ngày sẽ được cung cấp và hàm này sẽ định dạng ngày đó theo các tham số định dạng đã chỉ định.

 

0988 542 856
0988 542 856