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

แบบสอบถาม MySQL เพื่อแสดงอันดับของหลายคอลัมน์?


สำหรับสิ่งนี้ ให้ใช้วิธี FIND_IN_SET() ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable634 (FirstName varchar(100), Marks int,Age int);Query OK, 0 แถวได้รับผลกระทบ (0.69 วินาที)

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

mysql> แทรกลงในค่า DemoTable634 ('John',60,23); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า DemoTable634 ('Chris',80,21); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า DemoTable634 ('Robert',70,24); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.22 วินาที)

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

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

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

<ก่อนหน้า>+-----------+-------+------+| ชื่อจริง | มาร์ค | อายุ |+-----------+-------+------+| จอห์น | 60 | 23 || คริส | 80 | 21 || โรเบิร์ต | 70 | 24 |+-----------+-------+------+3 แถวในชุด (0.00 วินาที)

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

mysql> SELECT FirstName,Marks,Age, FIND_IN_SET( Marks,( SELECT GROUP_CONCAT( Marks ORDER BY Marks DESC ) FROM DemoTable634)) AS RankOfMarks, FIND_IN_SET(Age,( SELECT GROUP_CONCAT( Age ORDER BY Age DESC ) ) AS RankOfAge จาก DemoTable634;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้แสดงอันดับตามเครื่องหมายและอายุ -

<ก่อนหน้า>+-----------+-------+------+-------------+----- ------+| ชื่อจริง | มาร์ค | อายุ | RankOfMarks | RankOfAge |+-----------+-------+------+-------------+------ -----+| จอห์น | 60 | 23 | 3 | 2 || คริส | 80 | 21 | 1 | 3 || โรเบิร์ต | 70 | 24 | 2 | 1 |+-----------+-------+------+-------------+------ -----+3 แถวในชุด (0.01 วินาที)