คุณสามารถใช้แบบสอบถามย่อยสำหรับความแตกต่างระหว่างสองตัวเลือกใน MySQL ไวยากรณ์มีดังนี้:
SELECT *FROM yourTableName โดยที่ yourColumnName ไม่อยู่ใน (SELECT yourColumnName FROM youTableName WHERE yourCondition;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง DifferenceSelectDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> UserId int, -> UserValue int, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.87 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:
mysql> แทรกลงในค่า DifferenceSelectDemo(UserId,UserValue) (10,10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที) mysql> แทรกลงในค่า DifferenceSelectDemo (UserId, UserValue) (10,20); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DifferenceSelectDemo (UserId, UserValue) (20,30); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า DifferenceSelectDemo (UserId, UserValue) (20,20);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า DifferenceSelectDemo (UserId, UserValue) (30,40); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า DifferenceSelectDemo (UserId, UserValue) ( 30,20);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.15 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก DifferenceSelectDemo;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+---------+-----------+| รหัส | รหัสผู้ใช้ | UserValue |+----+-------+-----------+| 1 | 10 | 10 || 2 | 10 | 20 || 3 | 20 | 30 || 4 | 20 | 20 || 5 | 30 | 40 || 6 | 30 | 20 |+----+--------+-----------+6 แถวในชุด (0.02 วินาที)นี่คือแบบสอบถามเพื่อรับความแตกต่างระหว่างสองตัวเลือก:
mysql> เลือก *จาก DifferenceSelectDemo -> โดยที่ UserValue ไม่อยู่ใน (เลือก UserValue จาก DifferenceSelectDemo โดยที่ Id=1)
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+---------+-----------+| รหัส | รหัสผู้ใช้ | UserValue |+----+-------+-----------+| 2 | 10 | 20 || 3 | 20 | 30 || 4 | 20 | 20 || 5 | 30 | 40 || 6 | 30 | 20 |+----+--------+-----------+5 แถวในชุด (0.09 วินาที)