SQL Selecione apenas linhas com valor mínimo em uma coluna com a condição Where
Mesa:
| id | productId | orderIndex | rejected | ------------------------------------------ | 1 | 1 | 0 | 1 | | 2 | 1 | 1 | 0 | | 3 | 1 | 2 | 0 | | 4 | 2 | 0 | 0 | | 5 | 2 | 1 | 1 | | 6 | 3 | 0 | 0 |
Como posso selecionar uma linha por productId com o orderIndex mínimo que não é rejeitado?
Resultado esperado:
| id | productId | orderIndex | rejected | ------------------------------------------ | 2 | 1 | 1 | 0 | | 4 | 2 | 0 | 0 | | 6 | 3 | 0 | 0 |
Eu tentei essa consulta, mas não recebi o resultado correto:
SELECT id, productId, min(orderIndex) FROM table WHERE rejected = 0 GROUP BY productId
Este também não funciona:
SELECT id, productId, min(orderIndex) FROM ( SELECT id, productId, orderIndex FROM table WHERE rejected = 0 ) t GROUP BY productId