sql >> Databasteknik >  >> RDS >> Mysql

SQL Välj endast rader med minimivärde i en kolumn med Where Condition

Du kan börja med att välja minimiorderindex för produkter som inte avvisas så här:

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

När du har det kan du slå ihop det med din ursprungliga tabell under förutsättning att productId och minOrderIndex matchar:

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;

Min fråga gör antagandet att det inte finns några dubbletter (productId, orderIndex) par. Så länge de inte finns kommer det att fungera bra. Här är en SQL-fiol exempel.



  1. Finns det någon boolesk typ i Oracle-databaser?

  2. PowerManager.PARTIAL_WAKE_LOCK android

  3. Hur man förvandlar en json-array till rader i postgres

  4. Kan inte ansluta till MySQL-server på (ip eller domännamn)