sql >> Database >  >> RDS >> Mysql

SELECT query retourneer 1 rij van elke groep

Er zijn veel alternatieven om dit op te lossen, een die ik aanbeveel is om deel te nemen aan een subquery die afzonderlijk de nieuwste ID krijgt (ervan uitgaande dat de kolom AUTO_INCREMENT is ed ) voor elke 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

zorg voor betere prestaties voor een index op deze kolommen:ID en store_id .

UPDATE 1

als je een limiet wilt hebben voor alle records, gebruik deze dan hieronder,

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. Erlang en het gebruik van Heap Memory

  2. oracle 12c - selecteer string na het laatste voorkomen van een karakter

  3. INSERT gebruiken met een PostgreSQL-database met Python

  4. Waar clausule rijen filteren in MySQL