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ụ.