Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL Изберете само редове с минимална стойност в колона с условие Where

Можете да започнете, като изберете минималния индекс за поръчка на продукти, които не са отхвърлени по следния начин:

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

След като го имате, можете да го присъедините към оригиналната си таблица при условие, че productId и minOrderIndex съвпадат:

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;

Моята заявка прави предположението, че няма дублиращи се двойки (productId, orderIndex). Докато такива не съществуват, това ще работи добре. Ето SQL Fiddle пример.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL/InnoDB и продължителни заявки

  2. ini_set, set_time_limit, (max_execution_time) - не работи

  3. създаване на база данни за проследяване кои потребители са щракнали върху кои връзки?

  4. MySQL неправилен ключов файл за таблицата tmp при извършване на множество обединения

  5. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver (maven + jboss)