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

จะจับคู่คีย์กับค่าสำหรับแต่ละฟิลด์ในแบบสอบถามแบบใช้เลือกข้อมูล MySQL ได้อย่างไร


คุณสามารถใช้คำสั่ง CASE ใน MySQL เพื่อจับคู่คีย์กับค่าสำหรับแต่ละฟิลด์ในคิวรีแบบใช้เลือกข้อมูล ไวยากรณ์มีดังนี้ −

เลือก yourColumnName1,yourColumnName2,yourColumnName3,.........N( CASE WHEN yourColumnName =1 แล้ว 'ENABLED' ELSE 'DISABLED' END) เป็น anyVariableNameFROM yourTableName;

คุณสามารถใช้ฟังก์ชัน IF() เพื่อจุดประสงค์เดียวกันได้ ไวยากรณ์มีดังนี้ −

เลือก yourColumnName1,yourColumnName2,yourColumnName3,.........N,IF(yourColumnName,'ENABLED','DISABLED') เป็น anyVariableName FROM yourTableName;

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

mysql> สร้างตาราง MapKeys -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> ชื่อ varchar(20), -> isActive boolean, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ ( 0.65 วินาที)

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

mysql> แทรกลงใน MapKeys(Name,isActive) values('Larry',true);Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงใน MapKeys(Name,isActive) ค่า('David',false);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกลงใน MapKeys (ชื่อ, isActive) ค่า ('ไมค์', จริง); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงใน MapKeys (ชื่อ, isActive) values('Carol',false);Query OK, 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงใน MapKeys(Name,isActive) ค่า('Sam',false);Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงใน MapKeys(Name,isActive) values('Bob',true);Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที)

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

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

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

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

ให้เราแมปคีย์โดยใช้คำสั่ง case แบบสอบถามมีดังนี้ −

mysql> เลือก Id,Name, -> ( -> CASE WHEN isActive =1 แล้ว 'ENABLED' -> ELSE 'DISABLED' -> END -> ) AS Status -> from MapKeys;

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

<ก่อนหน้า>+----+-------+----------+| รหัส | ชื่อ | สถานะ |+----+-------+----------+| 1 | แลร์รี่ | เปิดใช้งาน || 2 | เดวิด | พิการ || 3 | ไมค์ | เปิดใช้งาน || 4 | แครอล | พิการ || 5 | แซม | พิการ || 6 | บ๊อบ | ENABLED |+----+-------+----------+6 แถวในชุด (0.00 วินาที)

คุณสามารถทำสิ่งเดียวกันได้โดยใช้ฟังก์ชัน IF() -

mysql> เลือก Id, Name,if(isActive,'ENABLED','DISABLED') เป็นสถานะจาก MapKeys;

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

<ก่อนหน้า>+----+-------+----------+| รหัส | ชื่อ | สถานะ |+----+-------+----------+| 1 | แลร์รี่ | เปิดใช้งาน || 2 | เดวิด | พิการ || 3 | ไมค์ | เปิดใช้งาน || 4 | แครอล | พิการ || 5 | แซม | พิการ || 6 | บ๊อบ | ENABLED |+----+-------+----------+6 แถวในชุด (0.00 วินาที)