sql >> Databáze >  >> RDS >> Mysql

SQL Vyberte pouze řádky s minimální hodnotou ve sloupci s podmínkou Where

Můžete začít výběrem minimálního indexu objednávky produktů, které nejsou odmítnuty takto:

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

Jakmile to budete mít, můžete se k ní připojit k vaší původní tabulce za podmínky, že se productId a minOrderIndex shodují:

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;

Můj dotaz předpokládá, že neexistují žádné duplicitní páry (productId, orderIndex). Dokud nebudou existovat, bude to fungovat dobře. Zde je SQL Fiddle příklad.



  1. Funkce NEW_TIME() v Oracle

  2. problém s použitím parametrů Oracle v SELECT IN

  3. Jak získat přístup k PhpMyAdmin bez přihlášení k cPanel

  4. MySQL:Počítejte jedinečné páry hodnot v řádcích