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

MySql заявка:Изберете първите 3 реда от таблицата за всяка категория

LIMIT спира само броя резултати, които инструкцията връща. Това, което търсите, обикновено се нарича аналитични/прозорци/функции за класиране - които MySQL не поддържа, но можете да емулирате с помощта на променливи:

SELECT x.*
  FROM (SELECT t.*,
               CASE 
                 WHEN @category != t.category THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @category := t.category AS var_category
          FROM TBL_ARTIKUJT t
          JOIN (SELECT @rownum := NULL, @category := '') r
      ORDER BY t.category) x
 WHERE x.rank <= 3

Ако не промените SELECT x.* , наборът от резултати ще включва rank и var_category стойности - ще трябва да посочите колоните, които наистина искате, ако това не е така.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Завършете урока за Soft Delete &Restore Laravel 8 за изтрити записи

  2. Какъв е най-добрият начин да използвате LEFT OUTER JOIN, за да проверите за несъществуване на свързани редове

  3. Кой е най-лесният начин за добавяне на празни дати в sql резултати (в края на mysql или perl)?

  4. Hive 2.1.1 MetaException (съобщение:Информацията за версията не е намерена в metastore. )

  5. Допълнителни полета с SQL MIN() &GROUP BY