SELECT query return 1 row from each group SELECT query return 1 row from each group sql sql

SELECT query return 1 row from each group


There are many alternatives to solves this, one which I recommend is to have joined a subquery which separately gets the latest ID (assuming that the column is AUTO_INCREMENTed) for each 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

for better performance, be sure to have an index on these columns: ID and store_id.

UPDATE 1

if you want to have limit for every records, use this below,

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


SELECT store_id,id,product_name FROM table_nameWHERE id IN (SELECT MAX(id) FROM table_name GROUP BY store_id)ORDER BY id

this should work and you can Order by as per your req either by store_id or id.


Try this please:

SELECT * FROM YOURTABLE BJOIN (SELECT MAX(ID) MX FROM YOURTABLE GROUP BY STORE_ID) AON  A.STORE_ID = B.STORE_IDAND B.ID = A.MXGROUP BY B.STORE_ID;