Tạo bảng điểm sinh viên
mysql> CREATE TABLE DemoTable1621 (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20),
-> StudentMarks INT
-> );
Query OK, 0 rows affected (1.69 sec)
mysql> INSERT INTO DemoTable1621(StudentName, StudentMarks) VALUES('Chris', 45);
mysql> INSERT INTO DemoTable1621(StudentName, StudentMarks) VALUES('Bob', 78);
mysql> INSERT INTO DemoTable1621(StudentName, StudentMarks) VALUES('David', 89);
mysql> INSERT INTO DemoTable1621(StudentName, StudentMarks) VALUES('Adam', 87);
Dữ liệu
mysql> SELECT * FROM DemoTable1621;
+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
| 1 | Chris | 45 |
| 2 | Bob | 78 |
| 3 | David | 89 |
| 4 | Adam | 87 |
+-----------+-------------+--------------+
Truy vấn: Lấy tất cả cột kèm điểm cao nhất (MAX)
Sử dụng subquery trong danh sách chọn:
mysql> SELECT tblData.*,
-> (SELECT MAX(StudentMarks) FROM DemoTable1621) AS MaximumMarks
-> FROM DemoTable1621 tblData;
Kết quả
+-----------+-------------+--------------+--------------+
| StudentId | StudentName | StudentMarks | MaximumMarks |
+-----------+-------------+--------------+--------------+
| 1 | Chris | 45 | 89 |
| 2 | Bob | 78 | 89 |
| 3 | David | 89 | 89 |
| 4 | Adam | 87 | 89 |
+-----------+-------------+--------------+--------------+
Lưu ý: Subquery vô hướng (scalar subquery) trả về một giá trị duy nhất, được lặp lại cho mỗi hàng.