sql >> Databáze >  >> RDS >> Mysql

SELECT dotaz vrátí 1 řádek z každé skupiny

Existuje mnoho alternativ, jak to vyřešit, jednou, kterou doporučuji, je připojit se k dílčímu dotazu, který samostatně získá nejnovější ID (za předpokladu, že sloupec je AUTO_INCREMENT ed ) pro každé 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

pro lepší výkon se ujistěte, že máte index v těchto sloupcích:ID a store_id .

AKTUALIZACE 1

pokud chcete mít limit pro každý záznam, použijte toto níže,

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. Upgrade datové platformy SQL Server v roce 2015

  2. Jak vybrat vše před/po určitém znaku v MySQL – SUBSTRING_INDEX()

  3. Jak SIN() funguje v MariaDB

  4. Jak vybrat určitý počet znaků zleva nebo zprava od řetězce na serveru SQL