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

SQL Chỉ chọn các hàng có giá trị tối thiểu trên cột có điều kiện ở đâu

Bạn có thể bắt đầu bằng cách chọn orderIndex tối thiểu của các sản phẩm không bị từ chối như sau:

SELECT productId, MIN(orderIndex)
FROM myTable
WHERE rejected = 0
GROUP BY productId;

Sau khi có điều đó, bạn có thể kết hợp nó với bảng ban đầu của mình với điều kiện productId và minOrderIndex khớp với nhau:

SELECT m.id, m.productId, m.orderIndex
FROM myTable m
JOIN(
  SELECT productId, MIN(orderIndex) AS minOrderIndex
  FROM myTable
  WHERE rejected = 0
  GROUP BY productId) tmp ON tmp.productId = m.productId AND tmp.minOrderIndex = m.orderIndex;

Truy vấn của tôi đưa ra giả định rằng không có cặp (productId, orderIndex) nào trùng lặp. Miễn là chúng không tồn tại, điều này sẽ hoạt động tốt. Đây là SQL Fiddle ví dụ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng phân vùng MySQL 5.5 theo A-Z

  2. Nhập dữ liệu từ cơ sở dữ liệu MySQL vào khung dữ liệu Pandas bao gồm tên cột

  3. Mẹo để cung cấp hiệu suất cơ sở dữ liệu MySQL - Phần thứ hai

  4. MariaDb SQL Injection

  5. Gọi bộ đẩy khi mysql đã thay đổi