sql >> データベース >  >> RDS >> Mysql

SQLWhere条件のある列で最小値の行のみを選択します

    次のように拒否されない製品の最小orderIndexを選択することから始めることができます:

    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)ペアがないことを前提としています。それらが存在しない限り、これは問題なく機能します。これが SQLFiddle です。 例。



    1. PostgreSQLで短い日の名前を取得する

    2. ベストプラクティス:mySQLファイルをPHPにインポートします。分割クエリ

    3. RODBCsqlSaveテーブル作成の問題

    4. Drupalデータベース構造-効率的/非効率的?