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

SELECTクエリは各グループから1行を返します

    これを解決するための多くの選択肢があります。私がお勧めするのは、最新のIDを個別に取得するサブクエリに参加することです。 (列がAUTO_INCREMENTであると仮定します ed )各store_ID

    SELECT  a.*
    FROM    tableName a
            INNER JOIN
            (
                SELECT  store_ID, MAX(ID) max_ID
                FROM    tableName
                GROUP BY store_ID
            ) b ON a.store_ID = b.store_ID AND
                    a.ID = b.max_ID
    

    パフォーマンスを向上させるには、次の列にインデックスを付けるようにしてください:ID およびstore_id

    アップデート1

    すべてのレコードに制限を設ける場合は、以下を使用してください。

    SELECT ID, product_Name, store_ID
    FROM   tableName a
    WHERE
      (
         SELECT COUNT(*) 
         FROM   tableName b
         WHERE  b.store_ID = a.store_ID AND b.ID >= a.ID
      ) <= 2;
    


    1. 返されたUriからデータベースに挿入された新しいレコードのIDを取得します

    2. SQL Server(T-SQL)で「date」を「smalldatetime」に変換する例

    3. PLSQLプロシージャを使用してOracleのCSVファイルにデータをエクスポートする方法

    4. 日付/時刻からSQLServerの文字列の例へのCONVERT()