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

MySQL:защо тази макс. N членове на групова заявка работи?

Свързаната подзаявка връща броя на лицата със същата държава и по-висок идентификатор. Така че, ако сравните това с < 2 ще изберете само двата най-високи идентификатора за всяка държава. Може да получите по-добра представа за това, като разгледате резултатите от избора на подзаявката, вместо да я използвате като ограничение:

SELECT co.id, co.person, co.country,
    (
        SELECT COUNT(*)
        FROM person ci
        WHERE  co.country = ci.country      -- controlling grouping column
        AND co.id < ci.id                       -- controlling min or max 
    ) AS higher_ids
FROM person co

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=9c3cfe469dd299b3160d09e97e73e499

Имайте предвид, че освен ако няма оптимизации, които търсят конкретно този модел, което силно се съмнявам, тази заявка ще бъде O(N^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. Вземете възрастта на човек в MySQL

  2. mysql изберете дати без таблици

  3. MySQL репликация:ако не посоча никакви бази данни, log_bin ще регистрира ли ВСИЧКО?

  4. Как мога да проверя броя на активните sqlalchemy връзки в пул във всеки един момент?

  5. PDO с MySQL не работи при активиране по имейл