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

Khoảng cách tối thiểu và nhóm theo

Tại đây là một bài viết xuất sắc trong tài liệu MySQL chính thức:

Trích dẫn:

Các hàng nắm giữ mức tối đa theo nhóm của một cột nhất định

Nhiệm vụ:Đối với mỗi bài viết, hãy tìm đại lý hoặc các đại lý có giá đắt nhất.

Vấn đề này có thể được giải quyết bằng một truy vấn con như sau:

SELECT article, dealer, price
FROM   shop s1
WHERE  price=(SELECT MAX(s2.price)
              FROM shop s2
              WHERE s1.article = s2.article);

Ví dụ trước sử dụng một truy vấn con tương quan, có thể không hiệu quả (xem Phần 13.2.10.7, “Truy vấn con tương quan”). Các khả năng khác để giải quyết vấn đề là sử dụng truy vấn con không liên quan trong mệnh đề FROM hoặc THAM GIA TRÁI.

Truy vấn phụ không liên quan:

SELECT s1.article, dealer, s1.price
FROM shop s1
JOIN (
  SELECT article, MAX(price) AS price
  FROM shop
  GROUP BY article) AS s2
  ON s1.article = s2.article AND s1.price = s2.price;

THAM GIA TRÁI:

SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
WHERE s2.article IS NULL;

LEFT JOIN hoạt động trên cơ sở khi s1.price ở giá trị lớn nhất, không có s2.price nào có giá trị lớn hơn và các giá trị của hàng s2 sẽ là NULL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mô phỏng TO_SECONDS () trong các phiên bản MySQL cũ hơn (<5.5.0)

  2. làm thế nào để sử dụng một chuỗi làm công thức cho các phép tính toán học trong php?

  3. Làm cách nào để VBA có thể kết nối với cơ sở dữ liệu MySQL trong Excel?

  4. Chèn hàng chỉ khi có id từ bảng khác

  5. Khoảng cách địa lý MySQL