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

MySQL ต่อแถวเพื่อดึงค่าที่เกี่ยวข้องสูงสุดจาก ID ที่ซ้ำกัน?


สำหรับสิ่งนี้ คุณสามารถใช้ GROUP BY clause หากต้องการค้นหาค่าสูงสุด ให้ใช้ฟังก์ชัน MAX() ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1804 ( Id int, Marks1 int, Marks2 int, Marks3 int ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.00 วินาที)

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

mysql> แทรกลงในค่า DemoTable1804 (1,56,89,34) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1804 (1,98,null,94) แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1804 (2,34,45,78); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.00 วินาที) mysql> แทรกลงในค่า DemoTable1804 (2, null, 67, null); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.00 วินาที)

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

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

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

<ก่อนหน้า>+------+---------+---------+--------+| รหัส | Marks1 | Marks2 | Marks3 |+------+---------+---------+--------+| 1 | 56 | 89 | 34 || 1 | 98 | NULL | 94 || 2 | 34 | 45 | 78 || 2 | NULL| 67 | NULL |+------+--------+---------+--------+4 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามสำหรับการต่อแถวและค้นหาค่าสูงสุด -

mysql> เลือก Id,max(Marks1),max(Marks2),max(Marks3) จากกลุ่ม DemoTable1804 ตาม Id;

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

<ก่อนหน้า>+------+-------------+-------------+----------- ---+| รหัส | max(Marks1) | max(Marks2) | สูงสุด(Marks3) |+------+-------------+-------------+--------- ----+| 1 | 98 | 89 | 94 || 2 | 34 | 67 | 78 |+------+-------------+-------------+----------- -+2 แถวในชุด (0.00 วินาที)