Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQL Wybierz tylko wiersze z wartością minimalną w kolumnie z warunkiem WHERE

Możesz zacząć od wybrania minimalnego indeksu zamówienia produktów, które nie są odrzucane w następujący sposób:

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

Gdy już to zrobisz, możesz dołączyć do niego z oryginalnym stołem, pod warunkiem, że productId i minOrderIndex są zgodne:

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;

Moje zapytanie zakłada, że ​​nie ma zduplikowanych par (productId, orderIndex). Dopóki te nie istnieją, to będzie działać dobrze. Oto SQL Fiddle przykład.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dodawać adnotacje do pola autoinkrementacji MYSQL za pomocą adnotacji JPA?

  2. Jak sprawdzić, czy dane dane występują w wielu tabelach (z których wszystkie mają tę samą kolumnę)?

  3. Jak mogę wykorzystać jeśli istnieje do tworzenia lub usuwania indeksu w MySQL?

  4. Nieprawidłowy wyjątek rzutowania został nieobsługiwany przez MySQL

  5. niezdefiniowany indeks Nazwa