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_INCREMENT
ed) 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;