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

การตั้งค่าคอลัมน์เป็นชื่อคอลัมน์ในผลลัพธ์การสืบค้น MySQL?


หากต้องการตั้งค่าคอลัมน์เป็นชื่อคอลัมน์ในผลลัพธ์การสืบค้น คุณต้องใช้คำสั่ง CASE

ไวยากรณ์มีดังนี้ −

เลือก yourIdColumnName,max(case when (yourColumnName1='yourValue1') แล้ว yourColumnName2 อื่นเป็น NULLend) เป็น 'yourValue1',max(case when (yourColumnName1='yourValue2') จากนั้น yourColumnName2 อื่น ๆ NULLend) เป็น 'yourValue2' กรณีที่ yourColumnName1='yourValue3') จากนั้น yourColumnName2 อื่น ๆ NULLend) เป็น 'yourValue3',..N จาก valueAsColumngroup โดย yourIdColumnNameorder โดย yourIdColumnName;

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

mysql> สร้างตาราง valueAsColumn -> ( -> UserId int, -> UserColumn1 varchar(10), -> UserColumn2 varchar(10) -> );Query OK, 0 แถวได้รับผลกระทบ (0.75 วินาที)

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

mysql> แทรกลงในค่า valueAsColumn(0,'John','A+');Query OK, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงในค่า valueAsColumn(0,'Carol','B');Query ตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า valueAsColumn (0, 'Sam', 'C'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า valueAsColumn (1,'John', 'D'); ตกลง แบบสอบถาม 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า valueAsColumn (1, 'Carol', 'A'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า valueAsColumn ( 1,'Carol','C');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.15 วินาที)

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

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

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

<ก่อนหน้า>+---------+-------------+-------------+| รหัสผู้ใช้ | UserColumn1 | UserColumn2 |+---------+-------------+-------------+| 0 | จอห์น | A+ || 0 | แครอล | ข || 0 | แซม | ค || 1 | จอห์น | ด || 1 | แครอล | A || 1 | แครอล | C |+--------+-------------+-------------+6 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อตั้งค่าคอลัมน์เป็นชื่อคอลัมน์ -

mysql> เลือก UserId, -> max (กรณีที่ (UserColumn1 ='John') จากนั้น UserColumn2 อื่น NULL จะสิ้นสุด) เป็น 'John', -> max (กรณีที่ (UserColumn1 ='Carol') จากนั้น UserColumn2 อื่น NULL จะสิ้นสุด ) เป็น 'แครอล' -> สูงสุด (กรณีที่ (UserColumn1 ='Sam') จากนั้น UserColumn2 อื่น NULL จะสิ้นสุด) เป็น 'Sam' -> จาก valueAsColumn -> จัดกลุ่มตาม UserId -> สั่งซื้อโดย UserId;

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

<ก่อนหน้า>+---------+------+-------+------+| รหัสผู้ใช้ | จอห์น | แครอล | แซม |+---------+------+-------+------+| 0 | A+ | บี | ค || 1 | ด | ค | NULL |+--------+------+-------+------+2 แถวในชุด (0.00 วินาที)