Computer >> Máy Tính >  >> Lập trình >> MySQL

Truy vấn MySQL để tính tổng các giá trị của các cột tương tự từ hai bảng khác nhau cho một ID cụ thể


Giả sử chúng ta có hai bảng và cả hai bảng đều có hai cột PlayerId và PlayerScore. Chúng tôi cần thêm Điểm người chơi từ cả hai bảng này, nhưng chỉ cho một PlayerId cụ thể.

Đối với điều này, bạn có thể sử dụng UNION. Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable1(PlayerId int,PlayerScore int);
Query OK, 0 rows affected (9.84 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable1 values(1000,87);
Query OK, 1 row affected (3.12 sec)
mysql> insert into DemoTable1 values(1000,65);
Query OK, 1 row affected (1.29 sec)
mysql> insert into DemoTable1 values(1001,10);
Query OK, 1 row affected (1.76 sec)
mysql> insert into DemoTable1 values(1000,45);
Query OK, 1 row affected (2.23 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select *from DemoTable1;

Điều này sẽ tạo ra kết quả sau -

+----------+-------------+
| PlayerId | PlayerScore |
+----------+-------------+
| 1000     | 87          |
| 1000     | 65          |
| 1001     | 10          |
| 1000     | 45          |
+----------+-------------+
4 rows in set (0.00 sec)

Sau đây là truy vấn để tạo bảng thứ hai -

mysql> create table DemoTable2(PlayerId int,PlayerScore int);
Query OK, 0 rows affected (11.76 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable2 values(1000,67);
Query OK, 1 row affected (0.71 sec)
mysql> insert into DemoTable2 values(1001,58);
Query OK, 1 row affected (1.08 sec)
mysql> insert into DemoTable2 values(1000,32);
Query OK, 1 row affected (0.19 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select *from DemoTable2;

Điều này sẽ tạo ra kết quả sau -

+----------+-------------+
| PlayerId | PlayerScore |
+----------+-------------+
| 1000     | 67          |
| 1001     | 58          |
| 1000     | 32          |
+----------+-------------+
3 rows in set (0.00 sec)

Sau đây là truy vấn để tính tổng một cột trong một bảng với cột trong một bảng khác. Ở đây, chúng tôi đang thêm PlayerScore cho PlayerId 1000 -

mysql> select sum(firstSum) from
   (select Sum(PlayerScore) firstSum from DemoTable1 where PlayerId=1000 union
   select Sum(PlayerScore) firstSum from DemoTable2 where PlayerId=1000) tbl;

Điều này sẽ tạo ra kết quả sau -

+---------------+
| sum(firstSum) |
+---------------+
|           296 |
+---------------+
1 row in set (0.02 sec)