Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:Chọn N hàng, nhưng chỉ với các giá trị duy nhất trong một cột

Có lẽ không phải là giải pháp tốt nhất trong số các giải pháp và hiệu suất của IN có thể bị ảnh hưởng trên các bảng lớn hơn.

Truy vấn lồng nhau nhận Birthyear tối thiểu cho mỗi thành phố. Chỉ ghi lại những người có Birthyear này được so khớp trong truy vấn bên ngoài. Thứ tự theo độ tuổi sau đó giới hạn ở 3 kết quả sẽ cho bạn 3 người lớn tuổi nhất và cũng là người lớn tuổi nhất trong thành phố của họ (Egon Spengler bỏ qua ..)

SELECT Name, City, Birthyear, COUNT(*) AS ct
FROM table
WHERE Birthyear IN (SELECT MIN(Birthyear)
               FROM table
               GROUP by City)
GROUP BY City
ORDER BY Birthyear DESC LIMIT 3;

+-----------------+-------------+------+----+
| name            | city        | year | ct |
+-----------------+-------------+------+----+
| Henry Jones     | Chicago     | 1899 | 1  |
| Mac Taylor      | New York    | 1955 | 1  |
| Sarah Connor    | Los Angeles | 1959 | 1  |
+-----------------+-------------+------+----+

Chỉnh sửa - đã thêm GROUP BY City vào truy vấn bên ngoài, vì những người có cùng năm sinh sẽ trả về nhiều giá trị. Việc nhóm theo truy vấn bên ngoài đảm bảo rằng chỉ một kết quả sẽ được trả về cho mỗi thành phố, nếu nhiều người có Birthyear tối thiểu đó . ct cột sẽ hiển thị nếu có nhiều người tồn tại trong thành phố có Birthyear đó



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cơ sở dữ liệu không cập nhật tự động với MySQL và Python

  2. Trong các truy vấn MySQL, tại sao lại sử dụng join thay vì ở đâu?

  3. Cách tính số người dùng hoạt động hàng tuần (WAU) trong MySQL

  4. Thêm dữ liệu vào cơ sở dữ liệu MySQL từ biểu mẫu HTML

  5. error:command 'x86_64-linux-gnu-gcc' khi cài đặt mysqlclient