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

MySQL แทนที่ค่าในตาราง?


หากต้องการแทนที่ค่าในตาราง ให้ใช้คำสั่ง CASE เพื่อให้เข้าใจแนวคิด ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตารางแทนที่ValueDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT คีย์หลัก, -> ชื่อ varchar(10), -> isGreaterThan18 varchar(10) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.49 วินาที) 

แทรกบางระเบียนในตารางโดยใช้คำสั่ง insert

แบบสอบถามมีดังนี้

mysql> แทรกลงในreplaceValueDemo(Name,isGreaterThan18) values('John','YES');Query OK, 1 แถวได้รับผลกระทบ (0.24 วินาที)mysql> แทรกลงใน replaceValueDemo(Name,isGreaterThan18) ค่า ('Carol', 'NO');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่าแทนที่ValueDemo (ชื่อ, isGreaterThan18) ('ไมค์', 'ใช่'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงใน แทนที่ValueDemo(ชื่อ,isGreaterThan18) ค่า('Bob','YES');แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงในแทนที่ValueDemo(ชื่อ,isGreaterThan18) ค่า('Larry','NO');แบบสอบถามตกลง , 1 แถวได้รับผลกระทบ (0.09 วินาที)mysql> แทรกลงในค่า replaceValueDemo (ชื่อ, isGreaterThan18) ('David', 'NO'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า replaceValueDemo (ชื่อ, isGreaterThan18) ('James','DONOTKNOW'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่าแทนที่ValueDemo (ชื่อ isGreaterThan18) ('Robert', 'DONOTKNOW'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที )

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select

แบบสอบถามมีดังนี้

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

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

<ก่อนหน้า>+----+---------+-----------------+| รหัส | ชื่อ | isGreaterThan18 |+----+---------+-----------------+| 1 | จอห์น | ใช่ || 2 | แครอล | ไม่ || 3 | ไมค์ | ใช่ || 4 | บ๊อบ | ใช่ || 5 | แลร์รี่ | ไม่ || 6 | เดวิด | ไม่ || 7 | เจมส์ | DONOTKNOW || 8 | โรเบิร์ต | DONOTKNOW |+----+-------+-----------------+8 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อแทนที่ค่าในตาราง MySQL

mysql> อัปเดตชุดแทนที่ValueDemo isGreaterThan18=case when isGreaterThan18='YES' แล้ว 'NO' ELSE 'YES' END -> where isGreaterThan18 IN('YES','NO'); แบบสอบถามตกลง ได้รับผลกระทบ 6 แถว (0.19 วินาที )แถวที่ตรงกัน:6 เปลี่ยน:6 คำเตือน:0

ให้เราตรวจสอบบันทึกตารางอีกครั้ง

แบบสอบถามมีดังนี้

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

ต่อไปนี้เป็นผลลัพธ์ที่มีค่าแทนที่

<ก่อนหน้า>+----+---------+-----------------+| รหัส | ชื่อ | isGreaterThan18 |+----+---------+-----------------+| 1 | จอห์น | ไม่ || 2 | แครอล | ใช่ || 3 | ไมค์ | ไม่ || 4 | บ๊อบ | ไม่ || 5 | แลร์รี่ | ใช่ || 6 | เดวิด | ใช่ || 7 | เจมส์ | DONOTKNOW || 8 | โรเบิร์ต | DONOTKNOW |+----+-------+-----------------+8 แถวในชุด (0.00 วินาที)