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

วิธีที่ดีที่สุดในการทดสอบว่ามีแถวอยู่ในตาราง MySQL หรือไม่


ในการทดสอบว่ามีแถวอยู่ในตาราง MySQL หรือไม่ ให้ใช้เงื่อนไขที่มีอยู่ เงื่อนไขที่มีอยู่สามารถใช้ได้กับแบบสอบถามย่อย คืนค่า จริง เมื่อมีแถวอยู่ในตาราง มิฉะนั้น จะส่งกลับค่าเท็จ True จะแสดงในรูปของ 1 และ false จะแสดงเป็น 0

เพื่อความเข้าใจที่ดีขึ้น ขั้นแรกเราจะสร้างตารางโดยใช้คำสั่ง CREATE ต่อไปนี้เป็นแบบสอบถามเพื่อสร้างตาราง -

mysql> สร้างตาราง ExistsRowDemo-> (-> ExistId int,-> ชื่อ varchar(100)-> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.53 วินาที)

หลังจากสร้างตารางเรียบร้อยแล้ว เราจะแทรกระเบียนบางส่วนโดยใช้คำสั่ง INSERT แบบสอบถามเพื่อแทรกระเบียนลงในตาราง -

mysql> INSERT ลงในค่า ExistsRowDemo (100,'John');Query OK, 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> INSERT เป็นค่า ExistsRowDemo (101,'Bob'); Query OK, 1 แถวได้รับผลกระทบ (0.17 วินาที )mysql> INSERT เป็นค่า ExistsRowDemo (103,'Carol');Query OK, 1 แถวได้รับผลกระทบ (0.20 วินาที)mysql> INSERT เป็นค่า ExistsRowDemo (104,'David'); Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที)

หลังจากแทรกระเบียนทั้งหมดแล้ว เราสามารถแสดงโดยใช้คำสั่ง SELECT ซึ่งมีดังต่อไปนี้ -

mysql> SELECT * จาก ExistsRowDemo;

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

<ก่อนหน้า>+---------+-------+| ExistId | ชื่อ |+---------+-------+| 100 | จอห์น || 101 | บ๊อบ || 103 | แครอล || 104 | David |+---------+-------+4 แถวในชุด (0.00 วินาที)

เราได้เพิ่มบันทึกลงในตารางแล้ว ไวยากรณ์ในการตรวจสอบว่ามีแถวอยู่ในตารางหรือไม่โดยใช้เงื่อนไข EXISTS มีดังนี้ -

SELECT EXISTS(SELECT * FROM yourTableName WHERE yourCondition);

ฉันกำลังใช้แบบสอบถามข้างต้นเพื่อให้ได้ผลลัพธ์ -

หมายเหตุ:ประการแรก ฉันกำลังพิจารณาเงื่อนไขเมื่อมีแถวอยู่ในตาราง หลังจากนั้นเงื่อนไขจะถูกกล่าวถึงเมื่อไม่มีแถว

กรณีที่ 1

ในกรณีนี้ ฉันกำลังให้เงื่อนไขเมื่อมีแถวอยู่ ให้เรานำไวยากรณ์ข้างต้นไปทดสอบว่ามีแถวหรือไม่

mysql> SELECT EXISTS (เลือก * จาก ExistsRowDemo โดยที่ ExistId=104);

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

<ก่อน>+--------------------------------------------- --------+| EXISTS(เลือก * จาก ExistsRowDemo WHERE ExistId=104)|+------------------------------------------ ------------------|| 1 |+--------------------------------------------- --------+1 แถวในชุด (0.00 วินาที)

จากผลลัพธ์ตัวอย่างด้านบน จะเห็นได้ชัดว่ามีแถวอยู่ เนื่องจากค่าที่เราได้รับคือ 1 ซึ่งหมายความว่า TRUE!

กรณีที่ 2

ในกรณีนี้ ฉันกำลังอธิบายเงื่อนไขเมื่อแถวไม่มีอยู่ กำลังใช้การสืบค้นด้านบน

mysql> SELECT EXISTS (เลือก * จาก ExistsRowDemo โดยที่ ExistId=105);

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

<ก่อน>+--------------------------------------------- --------+| EXISTS(เลือก * จาก ExistsRowDemo โดยที่ ExistId=105)|+--------------------------------------------- ------------------|| 0 |+---------------------------------------------------------- --------+1 แถวในชุด (0.00 วินาที)

จากผลลัพธ์ข้างต้น เราจะเห็นผลลัพธ์เป็น 0 นั่นคือ เท็จ (ไม่มีแถว)