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

Złożone zapytanie MySQL daje nieprawidłowe wyniki

select * from (
    select a.idArticle, a.content, max(`order`) max_order
    from words_learned wl
    join words w on w.idwords = wl.idwords
    join article a on a.idArticle = w.idArticle
    where wl.userId = 4
    group by a.idArticle
) a
left join (
    select count(*) unknown_count, w2.idArticle from words w2
    left join words_learned wl2 on wl2.idwords = w2.idwords
    and wl2.userId =  4
    where wl2.idwords is null
    group by w2.idArticle
) unknown_counts on unknown_counts.idArticle = a.idArticle
where unknown_count is null or unknown_count < 10
order by max_order desc
limit 100

http://sqlfiddle.com/#!2/6944b/9

Pierwsza tabela pochodna wybiera unikalne artykuły, z których dany użytkownik zna jedno lub więcej słów, a także maksymalną order wartość tych słów. Maksymalna wartość porządku jest używana do sortowania ostatecznych wyników, tak aby artykuły zawierające słowa wysokiego rzędu pojawiały się jako pierwsze.

Druga tabela pochodna zlicza liczbę słów, których dany użytkownik nie zna dla każdego artykułu. Ta tabela służy do wykluczania wszelkich artykułów zawierających 10 lub więcej słów, których użytkownik nie zna.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Które zadanie powinno podjąć inicjatywę w sprawie wycofania, aplikacji lub bazy danych?

  2. Wywołanie procedury składowanej MySQL w ROR 4

  3. Jak połączyć się z adresami IPv6 w Kubernetes działającym w Google Container Engine?

  4. Błąd:Źródło danych odrzuciło nawiązanie połączenia, wiadomość z serwera:Za dużo połączeń

  5. Ustawianie kolumny jako znacznika czasu w środowisku pracy MySql?