Mysql
 sql >> база данни >  >> RDS >> Mysql

Заявката SELECT връща 1 ред от всяка група

Има много алтернативи за решаване на това, една, която препоръчвам е да се присъедините към подзаявка, която отделно получава най-новия ID (ако приемем, че колоната е AUTO_INCREMENT изд. ) за всеки 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

за по-добра производителност, не забравяйте да имате индекс на тези колони:ID и store_id .

АКТУАЛИЗИРАНЕ 1

ако искате да имате лимит за всеки запис, използвайте това по-долу,

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. Инсталирайте и използвайте Percona Toolkit на Centos 7

  2. Как да експортирате база данни с помощта на командния ред

  3. SQLSTATE[HY000] [1045] Достъпът е отказан за потребител 'username'@'localhost' с помощта на CakePHP

  4. Как да обърнете реда на символите в низ в MySQL

  5. Преобразуване на времевата марка към дата в MySQL заявка