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

SQL Vælg kun rækker med minimumsværdi på en kolonne med Where Condition

Du kan starte med at vælge minimumordreindekset for produkter, der ikke afvises på denne måde:

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

Når du har det, kan du forbinde det med din originale tabel på betingelse af, at productId og minOrderIndex matcher:

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 forespørgsel antager, at der ikke er nogen duplikerede (productId, orderIndex) par. Så længe de ikke eksisterer, vil det fungere fint. Her er en SQL Fiddle eksempel.



  1. Korrekt indsættelse af tabelnavn

  2. Sådan udfyldes et tal med førende nuller i MariaDB

  3. Hvordan IIF() virker i SQL Server

  4. Kald en lagret procedure fra DECLARE-sætningen, når du bruger markører i MySQL