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

การ Insert แบบมีเงื่อนไข (Conditional Insert) ใน MySQL ด้วย DUAL Table

Conditional Insert: เพิ่มข้อมูลก็ต่อเมื่อไม่มีข้อมูลซ้ำ

ใช้ตาราง DUAL (ตารางดัมมี่ใน MySQL) ร่วมกับ NOT EXISTS เพื่อ Insert ข้อมูลก็ต่อเมื่อไม่มีข้อมูลที่ตรงตามเงื่อนไขอยู่แล้ว

รูปแบบคำสั่ง (Syntax)

INSERT INTO yourTableName (col1, col2, ...)
SELECT val1, val2, ...
FROM DUAL
WHERE NOT EXISTS (
    SELECT * FROM yourTableName 
    WHERE condition_to_check_duplicate
);

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

สร้างตาราง ConditionalInsertDemo:

CREATE TABLE ConditionalInsertDemo (
    UserId INT,
    TotalUser INT,
    NumberOfItems INT
);

ข้อมูลเดิม:

UserIdTotalUserNumberOfItems
101560780
102660890
10345050

Insert เฉพาะเมื่อไม่มี UserId=104 และ NumberOfItems=3500 อยู่แล้ว:

INSERT INTO ConditionalInsertDemo (UserId, TotalUser, NumberOfItems)
SELECT 104, 900, 3500 
FROM DUAL
WHERE NOT EXISTS (
    SELECT * FROM ConditionalInsertDemo 
    WHERE UserId = 104 AND NumberOfItems = 3500
);

ผลลัพธ์ - ข้อมูลถูกเพิ่ม:

UserIdTotalUserNumberOfItems
101560780
102660890
10345050
1049003500

ประโยชน์: ป้องกันข้อมูลซ้ำ (Duplicate) ได้ในคำสั่งเดียวโดยไม่ต้องเขียน Application Logic แยก