ใช้ 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