U kunt beginnen met het selecteren van de minimale bestelindex van producten die niet als volgt worden afgewezen:
SELECT productId, MIN(orderIndex)
FROM myTable
WHERE rejected = 0
GROUP BY productId;
Als je dat eenmaal hebt, kun je het samenvoegen met je originele tabel op voorwaarde dat productId en minOrderIndex overeenkomen:
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;
Mijn vraag gaat ervan uit dat er geen dubbele (productId, orderIndex) paren zijn. Zolang die er niet zijn, werkt dit prima. Hier is een SQL Fiddle voorbeeld.