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

Lấy tất cả người dùng có tuổi lớn nhất dùng subquery MySQL

Sử dụng subquery trong WHERE để tìm giá trị MAX(age), sau đó lọc tất cả hàng có tuổi bằng giá trị đó.

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable(Name VARCHAR(100), Age INT); 
Query OK, 0 rows affected (0.46 sec)

mysql> INSERT INTO DemoTable VALUES 
('Chris',23), ('David',55), ('Bob',53), ('Mike',54), ('Sam',55); 
Query OK, 5 rows affected

Truy vấn subquery tìm tuổi max

mysql> SELECT * FROM DemoTable 
WHERE Age = (SELECT MAX(Age) FROM DemoTable);

Kết quả (2 người 55 tuổi):

+-------+------+
| Name  | Age  |
+-------+------+
| David | 55   |
| Sam   | 55   |
+-------+------+

So sánh với LIMIT: ORDER BY Age DESC LIMIT 1 chỉ trả về 1 hàng (bỏ lỡ Sam). Subquery trả về tất cả hàng chia sẻ giá trị max.

Hiệu năng: Subquery được tối ưu hóa tốt trong MySQL. Với bảng lớn, đảm bảo có index trên cột Age.