sql >> Databasteknik >  >> RDS >> Mysql

SELECT-fråga returnerar 1 rad från varje grupp

Det finns många alternativ för att lösa detta, ett som jag rekommenderar är att ha gått med i en underfråga som separat får det senaste ID (förutsatt att kolumnen är AUTO_INCREMENT ed ) för varje 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

för bättre prestanda, se till att ha ett index på dessa kolumner:ID och store_id .

UPPDATERING 1

om du vill ha gräns för alla poster, använd detta nedan,

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;


  1. Skapa en databas i SQL Server (T-SQL)

  2. Bästa sättet att lagra tid (tt:mm) i en databas

  3. Hur serialiserar jag en stor graf av .NET-objekt till en SQL Server BLOB utan att skapa en stor buffert?

  4. Anslutning till Db dör efter>4<24 i spring-boot jpa hibernate