Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SELECT-Abfrage gibt 1 Zeile aus jeder Gruppe zurück

Es gibt viele Alternativen, um dies zu lösen, eine, die ich empfehle, ist, sich einer Unterabfrage anzuschließen, die separat die neueste ID erhält (vorausgesetzt, die Spalte ist AUTO_INCREMENT ed ) für jede 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

Stellen Sie für eine bessere Leistung sicher, dass Sie einen Index für diese Spalten haben:ID und store_id .

AKTUALISIERUNG 1

Wenn Sie ein Limit für alle Datensätze haben möchten, verwenden Sie dies unten,

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;