Chạy truy vấn MySQL từ terminal không hiển thị kết quả
Để thực thi truy vấn từ dòng lệnh MySQL mà không in kết quả ra màn hình, gán kết quả vào biến người dùng (user-defined variable) với tiền tố @.
Ví dụ minh họa
Tạo bảng DemoTable709:
mysql> CREATE TABLE DemoTable709 (Amount INT); Query OK, 0 rows affected (0.62 sec)
Chèn dữ liệu:
mysql> INSERT INTO DemoTable709 VALUES(100); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO DemoTable709 VALUES(560); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable709 VALUES(7800); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable709 VALUES(1020); Query OK, 1 row affected (0.15 sec)
Xem dữ liệu:
mysql> SELECT * FROM DemoTable709;
+--------+ | Amount | +--------+ | 100 | | 560 | | 7800 | | 1020 | +--------+ 4 rows in set (0.00 sec)
Gán kết quả SUM vào biến @TotalAmount (không in ra màn hình):
mysql> SET @TotalAmount = (SELECT SUM(Amount) FROM DemoTable709); Query OK, 0 rows affected (0.00 sec)
Nếu muốn xem giá trị biến:
mysql> SELECT @TotalAmount;
+--------------+ | @TotalAmount | +--------------+ | 9480 | +--------------+ 1 row in set (0.05 sec)
Ứng dụng thực tế
- Sử dụng trong script/batch file để xử lý logic mà không làm nhiễu output
- Kết hợp với PREPARE/EXECUTE cho dynamic SQL
- Truyền giá trị giữa các truy vấn trong cùng session
Các cách khác để ẩn output
| Phương pháp | Mô tả |
|---|---|
Biến người dùng (@var) | Lưu kết quả scalar, dùng tiếp trong session |
SELECT ... INTO @var | Cú pháp thay thế: SELECT SUM(Amount) INTO @TotalAmount FROM DemoTable709; |
| Redirect output | Từ shell: mysql -e "query" > /dev/null (Linux) hoặc NUL (Windows) |
Option -s (silent) | mysql -s -e "query" giảm định dạng bảng, vẫn in dữ liệu |
Option -N (skip column names) | mysql -N -e "query" bỏ header cột |