Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คิวรี่ MySQL นับแถวที่มีความสัมพันธ์ซ้ำกันด้วย JOIN

ใช้ COUNT(*) ร่วมกับ JOIN ตารางตัวเอง (Self-join) เพื่อหาคู่ค่าที่สลับกัน

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)
mysql> SELECT * FROM DemoTable1543;
+--------+--------+
| Value1 | Value2 |
+--------+--------+
|     57 |     60 |
|     60 |     68 |
|     90 |     98 |
|     98 |     90 |
+--------+--------+
4 rows in set (0.00 sec)

นับคู่ที่ Value1=90 และ Value2=90 ในแถวที่สลับกัน (90→98 และ 98→90):

mysql> SELECT COUNT(*) FROM DemoTable1543 tbl1
    -> JOIN DemoTable1543 tbl2
    -> ON tbl1.Value2 = tbl2.Value1
    -> WHERE tbl1.Value1 = 90 AND tbl2.Value2 = 90;
+----------+
| COUNT(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

การประยุกต์: หาความสัมพันธ์สองทาง (mutual relationship) เช่น เพื่อนสนิท, การโอนเงินระหว่างบัญชีเดียวกัน