Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL Select nur Zeilen mit Mindestwert in einer Spalte mit Where-Bedingung

Sie können beginnen, indem Sie den Mindestbestellindex von Produkten auswählen, die nicht abgelehnt werden, wie folgt:

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

Sobald Sie das haben, können Sie es mit Ihrer ursprünglichen Tabelle verbinden, unter der Bedingung, dass productId und minOrderIndex übereinstimmen:

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;

Meine Abfrage geht davon aus, dass es keine doppelten Paare (productId, orderIndex) gibt. Solange diese nicht vorhanden sind, wird dies gut funktionieren. Hier ist ein SQL Fiddle Beispiel.