Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SELECT zapytanie zwraca 1 wiersz z każdej grupy

Istnieje wiele alternatyw, aby rozwiązać ten problem, zalecam dołączenie do podzapytania, które oddzielnie pobiera najnowszy ID (przy założeniu, że kolumna to AUTO_INCREMENT red ) dla każdego 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

dla lepszej wydajności upewnij się, że masz indeks w tych kolumnach:ID i store_id .

AKTUALIZACJA 1

jeśli chcesz mieć limit dla każdego rekordu, użyj tego poniżej,

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać dostęp do MySQL za pomocą głównego użytkownika MySQL?

  2. Maksymalne użycie pamięci MySQL

  3. Jak wykryć, że transakcja została już rozpoczęta?

  4. Jak naprawić nieprawidłową wartość ciągu w MySQL?

  5. Ładowanie klasy com.mysql.jdbc.Driver ... jest przestarzałym komunikatem