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

Đếm quan hệ tương hỗ giữa hai cột với JOIN trong MySQL

Giới thiệu

Tìm số lượng cặp giá trị có quan hệ "tương hỗ" (mutual relation): cột A của hàng 1 = cột B của hàng 2 VÀ cột B của hàng 1 = cột A của hàng 2.

1. Tạo bảng và dữ liệu

mysql> create table DemoTable1543 (
    -> Value1 int,
    -> Value2 int
    -> ); 
Query OK, 0 rows affected (1.36 sec)

mysql> insert into DemoTable1543 values(57,60); 
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable1543 values(60,68); 
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable1543 values(90,98); 
Query OK, 1 row affected (0.36 sec)
mysql> insert into DemoTable1543 values(98,90); 
Query OK, 1 row affected (0.20 sec)

2. Dữ liệu

mysql> select * from DemoTable1543;
+--------+--------+
| Value1 | Value2 |
+--------+--------+
|     57 |     60 |
|     60 |     68 |
|     90 |     98 |
|     98 |     90 |
+--------+--------+
4 rows in set (0.00 sec)

Chỉ cặp (90,98) và (98,90) có quan hệ tương hỗ.

3. Truy vấn đếm với SELF JOIN

mysql> select count(*) from DemoTable1543 tbl1
    -> join DemoTable1543 tbl2
    -> on tbl1.Value2 = tbl2.Value1
    -> where tbl1.Value1 = 90 and tbl2.Value2 = 90;

4. Kết quả

+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

Giải thích:

  • tbl1.Value2 = tbl2.Value1: 98 = 98 ✓
  • tbl1.Value1 = 90 và tbl2.Value2 = 90: 90 = 90 ✓
  • Kết quả: 1 cặp thỏa mãn

Áp dụng: Phát hiện bạn bè chung, quan hệ theo dõi lẫn nhau, giao dịch đối ứng...