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

หาความต่างระหว่าง 2 คำสั่ง SELECT ใน MySQL


ใช้ Subquery เพื่อหาความต่างระหว่าง 2 คำสั่ง SELECT ใน MySQL

รูปแบบไวยากรณ์

SELECT * FROM yourTableName WHERE yourColumnName NOT IN (SELECT yourColumnName FROM yourTableName WHERE yourCondition);

ตัวอย่างการใช้งาน

สร้างตาราง:

mysql> CREATE TABLE DifferenceSelectDemo ( Id INT NOT NULL AUTO_INCREMENT, UserId INT, UserValue INT, PRIMARY KEY(Id) ); Query OK, 0 rows affected (0.87 sec)

เพิ่มข้อมูล:

mysql> INSERT INTO DifferenceSelectDemo(UserId,UserValue) VALUES(10,10); Query OK, 1 row affected (0.24 sec)
mysql> INSERT INTO DifferenceSelectDemo(UserId,UserValue) VALUES(10,20); Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DifferenceSelectDemo(UserId,UserValue) VALUES(20,30); Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DifferenceSelectDemo(UserId,UserValue) VALUES(20,20); Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DifferenceSelectDemo(UserId,UserValue) VALUES(30,40); Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DifferenceSelectDemo(UserId,UserValue) VALUES(30,20); Query OK, 1 row affected (0.15 sec)

แสดงข้อมูล:

+----+--------+-----------+ | Id | UserId | UserValue | +----+--------+-----------+ | 1  | 10     | 10        | | 2  | 10     | 20        | | 3  | 20     | 30        | | 4  | 20     | 20        | | 5  | 30     | 40        | | 6  | 30     | 20        | +----+--------+-----------+ 6 rows in set (0.02 sec)

คำสั่งหาความต่าง: เลือกแถวที่ UserValue ไม่อยู่ใน Subquery (Id=1 มีค่า 10):

mysql> SELECT * FROM DifferenceSelectDemo WHERE UserValue NOT IN (SELECT UserValue FROM DifferenceSelectDemo WHERE Id=1);

ผลลัพธ์ (ไม่รวมค่า 10):

+----+--------+-----------+ | Id | UserId | UserValue | +----+--------+-----------+ | 2  | 10     | 20        | | 3  | 20     | 30        | | 4  | 20     | 20        | | 5  | 30     | 40        | | 6  | 30     | 20        | +----+--------+-----------+ 5 rows in set (0.09 sec)