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

แสดงคะแนนนักเรียนในคอลัมน์เดียวตามวิชาใน MySQL?


สำหรับสิ่งนี้ ให้ใช้ UNION ALL

ให้เราสร้างตารางก่อน:

mysql> สร้างตาราง DemoTable729 ( StudentId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(100), MySQLMarks int, CMarks int, JavaMarks int);Query OK, 0 แถวได้รับผลกระทบ (0.40 วินาที)

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

mysql> แทรกลงใน DemoTable729(StudentName,MySQLMarks,CMarks,JavaMarks) values('Chris',94,67,75);Query OK, 1 แถวได้รับผลกระทบ (0.21 วินาที)mysql> แทรกลงใน DemoTable729(StudentName,MySQLMarks, CMarks,JavaMarks) ค่า ('Robert',45,99,54);แบบสอบถามตกลง, 1 แถวได้รับผลกระทบ (0.18 วินาที)mysql> แทรกลงใน DemoTable729 (StudentName,MySQLMarks,CMarks,JavaMarks) ค่า ('David',57,89 ,43);ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)

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

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

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

<ก่อนหน้า>+-----------+-------------+-----------+------- ++-----------+| รหัสนักศึกษา | ชื่อนักเรียน | MySQLMarks | CMarks | JavaMarks |+-----------+-------------+-----------+-------- +-----------+| 1 | คริส | 94 | 67 | 75 || 2 | โรเบิร์ต | 45 | 99 | 54 || 3 | เดวิด | 57 | 89 | 43 |+-----------+-------------+-----------+------- +-----------+3 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อแสดงคะแนนนักเรียนในคอลัมน์เดียว:

mysql> เลือก StudentId,StudentName,'MySQL' เป็น SubjectName, MySQLMarks เป็น Scorefrom DemoTable729UNION ALLselect StudentId,StudentName, 'C' เป็น SubjectName, CMarks as Scorefrom DemoTable729UNION ALLselect StudentId,StudentName, 'Java' as ScoreName, Javas;

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

<ก่อนหน้า>+-----------+-------------+-------------+------ -+| รหัสนักศึกษา | ชื่อนักเรียน | SubjectName | คะแนน |+-----------+-------------+-------------+------- +| 1 | คริส | MySQL | 94 || 2 | โรเบิร์ต | MySQL | 45 || 3 | เดวิด | MySQL | 57 || 1 | คริส | ค | 67 || 2 | โรเบิร์ต | ค | 99 || 3 | เดวิด | ค | 89 || 1 | คริส | ชวา | 75 || 2 | โรเบิร์ต | ชวา | 54 || 3 | เดวิด | ชวา | 43 |+-----------+-------------+-------------+------- +9 แถวในชุด (0.00 วินาที)