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

จะเลือกค่าที่แตกต่างจากคอลัมน์เดียวกันและแสดงในคอลัมน์ต่าง ๆ ด้วย MySQL ได้อย่างไร


ในการเลือกค่าต่างๆ ตามเงื่อนไข ให้ใช้คำสั่ง CASE ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable (รหัส int ไม่ใช่ NULL AUTO_INCREMENT คีย์หลัก ชื่อ varchar (40) คะแนนเต็ม) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.54 วินาที)

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

mysql> แทรกลงในค่า DemoTable(Name,Score)('Chris',45);Query OK, 1 แถวได้รับผลกระทบ (0.24 วินาที)mysql> แทรกลงในค่า DemoTable(Name,Score)('David',68);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงใน DemoTable (ชื่อคะแนน) ค่า ('Robert', 89); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน DemoTable (ชื่อคะแนน) values('Bob',34);ตกลง, 1 แถวได้รับผลกระทบ (0.11 วินาที)mysql> แทรกลงใน DemoTable(ชื่อ,คะแนน) ค่า('Sam',66);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.22 วินาที) 

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----+---------+-------+| รหัส | ชื่อ | คะแนน |+----+---------+-------+| 1 | คริส | 45 || 2 | เดวิด | 68 || 3 | โรเบิร์ต | 89 || 4 | บ๊อบ | 34 || 5 | แซม | 66 |+----+---------+-------+5 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อเลือกค่าที่แตกต่างจากคอลัมน์เดียวกัน -

mysql> เลือกคะแนน ในกรณีที่คะแนน <40 คะแนนสิ้นสุดเป็น ' คะแนนน้อยกว่า 40' กรณีที่คะแนนระหว่าง 60 และ 70 คะแนนจะสิ้นสุดลงเป็น 'คะแนนระหว่าง 60 ถึง 70' กรณีที่คะแนน> 80 แล้วให้คะแนน ลงท้ายด้วย 'คะแนนมากกว่า 80' จาก DemoTable

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-------+--------------------------+----------------- -------------------------------------------+| คะแนน | คะแนนน้อยกว่า 40 | คะแนนระหว่าง 60 ถึง 70 | คะแนนมากกว่า 80 |+-------+--------------------+-------------- -------------------------------------+| 45 | NULL | NULL | NULL || 68 | NULL | 68 | NULL || 89 | NULL | NULL | 89 || 34 | 34 | NULL | NULL || 66 | NULL | 66 | NULL |+-------+--------------------------+----------------- --------+----------------------+5 แถวในชุด 1 คำเตือน (0.03 วินาที)