Mysql
 sql >> Base de données >  >> RDS >> Mysql

La requête SELECT renvoie 1 ligne de chaque groupe

Il existe de nombreuses alternatives pour résoudre ce problème, l'une que je recommande est d'avoir rejoint une sous-requête qui obtient séparément le dernier ID (en supposant que la colonne est AUTO_INCREMENT ed ) pour chaque 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

pour de meilleures performances, assurez-vous d'avoir un index sur ces colonnes :ID et store_id .

MISE À JOUR 1

si vous voulez avoir une limite pour chaque enregistrement, utilisez ceci ci-dessous,

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;