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

มีวิธีใน MySQL ที่จะย้อนกลับฟิลด์บูลีนด้วยแบบสอบถามเดียวหรือไม่?


ได้ คุณสามารถใช้ฟังก์ชัน if() จาก MySQL เพื่อย้อนกลับฟิลด์บูลีน ไวยากรณ์มีดังนี้ −

อัปเดต yourTableName ตั้งค่า yourBooleanColumnName =IF(yourBooleanColumnName,0,1);

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −

mysql> สร้างตาราง ReverseBooleanField -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> isValid BOOLEAN -> , -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.56 วินาที)

ตอนนี้คุณสามารถแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −

mysql> แทรกลงในค่า ReverseBooleanField(isValid) (จริง) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า ReverseBooleanField (isValid) (เท็จ) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า ReverseBooleanField (isValid) (จริง) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.29 วินาที) mysql> แทรกลงในค่า ReverseBooleanField (isValid) (จริง); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.09 วินาที) mysql> แทรกลงใน ReverseBooleanField (isValid) ค่า (เท็จ) แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)

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

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

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

<ก่อนหน้า>+----+---------+| รหัส | isValid |+----+---------+| 1 | 1 || 2 | 0 || 3 | 1 || 4 | 1 || 5 | 0 |+----+---------+5 แถวในชุด (0.00 วินาที)

MySQL ภายในแปลง BOOLEAN เป็น TINYINT(1) ซึ่งให้ค่าจริงเป็น 1 และเท็จเป็น 0

ตอนนี้ ให้เราย้อนกลับฟิลด์บูลีนในแบบสอบถามเดียว -

mysql> อัปเดตชุด ReverseBooleanField isValid =if(isValid,0,1);แบบสอบถามตกลง 5 แถวได้รับผลกระทบ (0.21 วินาที) แถวที่ตรงกัน − 5 เปลี่ยน − 5 คำเตือน − 0

ตรวจสอบว่าฟิลด์บูลีนกลับรายการหรือไม่โดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −

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

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

<ก่อนหน้า>+----+---------+| รหัส | isValid |+----+---------+| 1 | 0 || 2 | 1 || 3 | 0 | | 4 | 0 || 5 | 1 |+----+---------+5 แถวในชุด (0.00 วินาที)