Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chọn hàm tổng hợp và tất cả các cột khác trong MySQL

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.