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

Cộng giá trị các cột trong MySQL không dùng hàm tổng hợp

Cộng các cột trên cùng một hàng (row-level addition)

Khác với SUM() (tổng dọc theo cột), để cộng ngang các cột trên một hàng dùng toán tử + trực tiếp trong SELECT.

Cú pháp

SELECT *, (cot1 + cot2 + cot3) AS tongHang
FROM tenBang;

Ví dụ: Tính tổng điểm 3 môn

Bảng AddingColumnDemo:

CREATE TABLE AddingColumnDemo (
    StudentId INT, StudentName VARCHAR(20),
    MathMarks INT, PhysicsMarks INT, ChemistryMarks INT
);
INSERT INTO AddingColumnDemo VALUES
(1,'John',35,45,76), (2,'Bob',67,76,88),
(3,'Carol',45,56,43), (4,'Mike',82,75,71), (5,'Sam',92,89,88);

Truy vấn:

SELECT *, (MathMarks + PhysicsMarks + ChemistryMarks) AS TotalResult
FROM AddingColumnDemo;

Kết quả

+-----------+-------------+-----------+--------------+----------------+-------------+
| StudentId | StudentName | MathMarks | PhysicsMarks | ChemistryMarks | TotalResult |
+-----------+-------------+-----------+--------------+----------------+-------------+
|         1 | John        |        35 |           45 |             76 |         156 |
|         2 | Bob         |        67 |           76 |             88 |         231 |
|         3 | Carol       |        45 |           56 |             43 |         144 |
|         4 | Mike        |        82 |           75 |             71 |         228 |
|         5 | Sam         |        92 |           89 |             88 |         269 |
+-----------+-------------+-----------+--------------+----------------+-------------+

Xử lý NULL

Nếu cột có NULL, kết quả sẽ là NULL. Dùng COALESCE hoặc IFNULL:

SELECT *, 
    (COALESCE(MathMarks,0) + COALESCE(PhysicsMarks,0) + COALESCE(ChemistryMarks,0)) AS TotalResult
FROM AddingColumnDemo;

So sánh với SUM()

Phép toánSUM(cot)cot1 + cot2
HướngDọc (cột)Ngang (hàng)
Kết quả1 giá trị cho cả bảng1 giá trị cho mỗi hàng
NULL handlingBỏ qua NULLKết quả NULL nếu có NULL