sql >> Base de Datos >  >> RDS >> Mysql

SQL Seleccione solo filas con valor mínimo en una columna con condición Where

Puede comenzar seleccionando el pedido mínimoÍndice de productos que no se rechazan así:

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

Una vez que tenga eso, puede unirlo con su tabla original con la condición de que productId y minOrderIndex coincidan:

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;

Mi consulta supone que no hay pares duplicados (productId, orderIndex). Mientras no existan, esto funcionará bien. Aquí hay un SQL Fiddle ejemplo.