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

หาค่า Max จากคอลัมน์และเซ็ตให้ทุกแถวในคอลัมน์เดียวกัน MySQL

ใช้ Subquery ใน SELECT เพื่อหา MAX(Score) แล้วแสดงซ้ำให้ทุกแถวในผลลัพธ์ (ไม่ได้ UPDATE ตารางจริง แค่แสดงผล)

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    FirstName varchar(100), 
    Score int ); 
Query OK, 0 rows affected (0.60 sec)

เพิ่มข้อมูลคะแนน

mysql> insert into DemoTable values('David',59); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Chris',97); 
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values('Bob',98); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Carol',91); 
Query OK, 1 row affected (0.11 sec)

แสดงข้อมูลต้นฉบับ

mysql> select * from DemoTable;
+-----------+-------+
| FirstName | Score |
+-----------+-------+
| David     | 59    |
| Chris     | 97    |
| Bob       | 98    |
| Carol     | 91    |
+-----------+-------+
4 rows in set (0.00 sec)

คำสั่ง SELECT แสดงคะแนนสูงสุด (98) ในทุกแถว

mysql> select FirstName, (select max(Score) from DemoTable) as Score from DemoTable;

ผลลัพธ์

+-----------+-------+
| FirstName | Score |
+-----------+-------+
| David     | 98    |
| Chris     | 98    |
| Bob       | 98    |
| Carol     | 98    |
+-----------+-------+
4 rows in set (0.00 sec)

คำอธิบาย: Subquery (SELECT MAX(Score) FROM DemoTable) รันครั้งเดียว คืนค่า 98 แล้วแสดงในคอลัมน์ Score ของทุกแถว

กรณีต้องการ UPDATE จริง (เปลี่ยนข้อมูลในตาราง):

UPDATE DemoTable SET Score = (SELECT MAX(Score) FROM DemoTable);

ประยุกต์ใช้: แสดง "คะแนนสูงสุด" ข้างๆ คะแนนของแต่ละคนในรายงาน/Leaderboard