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

Nhóm một bảng có thứ tự sẽ luôn trả về hàng đầu tiên? MYSQL

Không, đây không phải là cách tiếp cận chính xác.

Tôi tin rằng bạn đang nói về một truy vấn như thế này:

SELECT  product.*, MIN(qty)
FROM    product
GROUP BY
        type
ORDER BY
        qty

Những gì bạn đang làm ở đây là sử dụng MySQL tiện ích mở rộng của cho phép bạn chọn các cột chưa được tổng hợp / không được nhóm trong một GROUP BY truy vấn.

Điều này chủ yếu được sử dụng trong các truy vấn có chứa cả JOINGROUP BY trên PRIMARY KEY , như thế này:

SELECT  order.id, order.customer, SUM(price)
FROM    order
JOIN    orderline
ON      orderline.order_id = order.id
GROUP BY
        order.id

Tại đây, order.customer không được nhóm cũng không được tổng hợp, nhưng vì bạn đang nhóm trên order.id , nó được đảm bảo có cùng giá trị trong mỗi nhóm.

Trong trường hợp của bạn, tất cả các giá trị của qty có các giá trị khác nhau trong nhóm.

Nó không được đảm bảo từ bản ghi nào trong nhóm mà công cụ sẽ nhận giá trị.

Bạn nên làm điều này:

SELECT  p.*
FROM    (
        SELECT  DISTINCT type
        FROM    product p
        ) pd
JOIN    p
ON      p.id = 
        (
        SELECT  pi.id
        FROM    product pi
        WHERE   pi.type = pd.type
        ORDER BY
                type, qty, id
        LIMIT 1
        )

Nếu bạn tạo chỉ mục trên product (type, qty, id) , truy vấn này sẽ hoạt động nhanh.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tạo tệp CSV từ cơ sở dữ liệu bằng Python?

  2. Cách thực hiện tham gia toàn bộ bên ngoài trong MySQL

  3. Cant duy trì một Hashset ở chế độ ngủ đông

  4. Không thể kết nối với Nhóm kết nối JDBC từ Glassfish

  5. Trường giống như tự động bổ sung cho các đối tượng có cùng khóa ngoại (Django 1.8, MySQL 5.5)