sql >> Database teknologi >  >> RDS >> Mysql

SELECT-forespørgsel returnerer 1 række fra hver gruppe

Der er mange alternativer til at løse dette, en som jeg anbefaler er at have tilsluttet sig en underforespørgsel, som separat får det seneste ID (forudsat at kolonnen er AUTO_INCREMENT red ) for hver 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 bedre ydeevne skal du sørge for at have et indeks på disse kolonner:ID og store_id .

OPDATERING 1

hvis du ønsker at have en grænse for hver post, så brug denne nedenfor,

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. Standardisering af PostgreSQL-sikkerhed på tværs af multi-cloud-miljøer

  2. Sådan forbinder du Airflow til Oracle-databasen

  3. Hvordan oversætter man PostgreSQL array_agg-funktionen til SQLite?

  4. Returner Unix-tidsstemplet i PostgreSQL