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

MySQL:dlaczego działa maksymalna liczba N członków na zapytanie grupowe?

Skorelowane podzapytanie zwraca liczbę osób z tego samego kraju i wyższym identyfikatorem. Więc jeśli porównasz to z < 2 wybierzesz tylko dwa najwyższe identyfikatory dla każdego kraju. Możesz lepiej to zrozumieć, patrząc na wyniki wyboru podzapytania, zamiast używać go jako ograniczenia:

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=369d09dc3cfe

Zauważ, że jeśli nie ma optymalizacji, które konkretnie szukają tego wzorca, w co bardzo wątpię, to zapytanie będzie 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. Jak sprawić, by baza danych Mysql obsługiwała język arabski?

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

  3. MYSQL - Wewnętrzne połączenie z AFTER UPDATE w tabeli

  4. Baza danych:najlepszy sposób wyszukiwania danych o lokalizacji geograficznej?

  5. Entity Framework działa wolno z powodu tabel pochodnych