Mysql
 sql >> Database >  >> RDS >> Mysql

SELECT query restituisce 1 riga da ciascun gruppo

Ci sono molte alternative per risolvere questo problema, una che consiglio è di aver unito una sottoquery che ottiene separatamente l'ultimo ID (supponendo che la colonna sia AUTO_INCREMENT ed ) per ogni 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

per prestazioni migliori, assicurati di avere un indice su queste colonne:ID e store_id .

AGGIORNAMENTO 1

se vuoi avere un limite per ogni record, usa questo sotto,

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;