Mysql
 sql >> Database >  >> RDS >> Mysql

SQL Seleziona solo righe con valore minimo su una colonna con condizione Where

Puoi iniziare selezionando l'ordine minimoIndice di prodotti che non vengono rifiutati in questo modo:

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

Una volta che lo hai, puoi unirlo alla tua tabella originale a condizione che productId e minOrderIndex corrispondano:

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;

La mia query presuppone che non ci siano coppie duplicate (productId, orderIndex). Finché non esistono, funzionerà bene. Ecco un SQL Fiddle esempio.