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

ข้อใดเป็นที่ต้องการระหว่าง MySQL EXISTS และ IN ในขณะที่ใช้ในแบบสอบถามย่อย


EXISTS จะบอกว่าการสืบค้นส่งคืนผลลัพธ์หรือไม่ในขณะที่สามารถใช้ IN เพื่อเปรียบเทียบค่าหนึ่งกับค่าอื่น IN ใช้ค่าตัวอักษร

หมายเหตุ − IN เป็นที่ต้องการในเคียวรีย่อยเมื่อใดก็ตามที่ผลลัพธ์ของเคียวรีย่อยมีขนาดเล็กมาก หากผลลัพธ์ของการค้นหาย่อยมีขนาดใหญ่มาก ระบบจะใช้ EXISTS

เนื่องจาก IN เป็นตัวเลือกที่ต้องการสำหรับผลลัพธ์การค้นหาย่อยที่มีขนาดเล็กกว่า เรากำลังพิจารณาตัวอย่างของ IN

เพื่อสร้างตาราง

mysql> สร้างตาราง InSubQueryDemo -> ( -> PNumber int, -> PName varchar(100) -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.60 วินาที)

กำลังแทรกระเบียนลงในตาราง

mysql> แทรกลงในค่า InSubQueryDemo (1,'Laptop'); Query OK, 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงในค่า InSubQueryDemo (2,'WirelessKeyboard'); Query OK, 1 แถวได้รับผลกระทบ (0.21 วินาที )mysql> แทรกลงในค่า InSubQueryDemo (3,'WirelessMouse'); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)

กำลังแสดงรายการทั้งหมด

mysql> เลือก *จาก InSubQueryDemo;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+---------+-----------------+| PNumber | PName |+---------+-----------------+| 1 | แล็ปท็อป || 2 | คีย์บอร์ดไร้สาย || 3 | WirelessMouse |+---------+-----------------+3 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นไวยากรณ์สำหรับ IN ที่มีแบบสอบถามย่อยเพื่อดึง “PNumber” ที่มากกว่า 1

mysql> เลือก *จาก InSubQueryDemo -> โดยที่ PNumber IN (เลือก PNumber จาก InSubQueryDemo WHERE PNumber> 1);

นี่คือผลลัพธ์

<ก่อนหน้า>+---------+-----------------+| PNumber | PName |+---------+-----------------+| 2 | คีย์บอร์ดไร้สาย || 3 | WirelessMouse |+---------+-----------------+2 แถวในชุด (0.04 วินาที)