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

หาค่าที่ขาดหายไปต่ำสุดในตาราง MySQL

การหาลำดับตัวเลขที่ขาดหาย (Gap) ใน MySQL

ใช้ LEFT JOIN เพื่อหาค่าตัวเลขที่ขาดหายไปในลำดับ (Sequence) โดยเปรียบเทียบแถวปัจจุบันกับแถวถัดไป

สร้างตารางและข้อมูลทดสอบ

CREATE TABLE FindValue (SequenceNumber INT);

INSERT INTO FindValue VALUES (109), (110), (111), (113), (114);

ข้อมูลขาดค่า 112

คำสั่ง SQL

SELECT tbl1.SequenceNumber + 1 AS ValueNotUsedInSequenceNumber
FROM FindValue AS tbl1
LEFT JOIN FindValue AS tbl2 ON tbl1.SequenceNumber + 1 = tbl2.SequenceNumber
WHERE tbl2.SequenceNumber IS NULL
ORDER BY tbl1.SequenceNumber LIMIT 1;

ผลลัพธ์

+------------------------------+
| ValueNotUsedInSequenceNumber |
+------------------------------+
| 112                          |
+------------------------------+

การทำงาน

  • tbl1 = ตารางต้นฉบับ
  • tbl2 = ตารางเดียวกันแต่ JOIN ด้วยเงื่อนไขค่าถัดไป
  • WHERE tbl2.SequenceNumber IS NULL = หาค่าที่ไม่มีคู่ใน tbl2 (ค่าขาดหาย)
  • ORDER BY ... LIMIT 1 = เอาค่าขาดหายตัวแรก (น้อยสุด)

ขยายใช้งาน

ลบ LIMIT 1 เพื่อดูค่าขาดหายทั้งหมด