Chúng ta có thể hiểu cách trừ giá trị giữa hai bảng thông qua ví dụ dưới đây, sử dụng LEFT JOIN để tìm chênh lệch giá sản phẩm giữa thời điểm hiện tại và trước đó.
Dữ liệu mẫu
mysql> SELECT * FROM value_curdate; +----+----------+-------+ | Id | Product | Price | +----+----------+-------+ | 1 | Notebook | 100 | | 2 | Pen | 40 | | 3 | Pencil | 65 | +----+----------+-------+ mysql> SELECT * FROM value_prevdate; +----+-----------+-------+ | Id | Product | Price | +----+-----------+-------+ | 1 | Notebook | 85 | | 2 | Pen | 34 | | 3 | Pencil | 56 | | 4 | Colors | 65 | | 5 | Fevistick | 25 | +----+-----------+-------+
Truy vấn tính chênh lệch giá
mysql> SELECT
value_curdate.id,
value_curdate.product,
value_curdate.price AS Curprice,
value_prevdate.price AS prevprice,
value_curdate.price - value_prevdate.price AS Difference
FROM value_curdate
LEFT JOIN value_prevdate ON value_curdate.id = value_prevdate.id;
Kết quả
+----+----------+----------+-----------+------------+ | id | product | Curprice | prevprice | Difference | +----+----------+----------+-----------+------------+ | 1 | Notebook | 100 | 85 | 15 | | 2 | Pen | 40 | 34 | 6 | | 3 | Pencil | 65 | 56 | 9 | +----+----------+----------+-----------+------------+
Giải thích: LEFT JOIN giữ lại tất cả bản ghi từ bảng bên trái (value_curdate). Với các sản phẩm không có trong bảng trước (Colors, Fevistick), cột prevprice sẽ là NULL và phép trừ sẽ trả về NULL.