sql >> Databasteknik >  >> RDS >> Mysql

Komplex MySQL-fråga ger felaktiga resultat

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

Den första härledda tabellen väljer unika artiklar som en given användare känner till ett eller flera ord från samt den maximala order värdet av dessa ord. Det maximala ordningsvärdet används för att sortera de slutliga resultaten så att artiklar som innehåller ord av hög ordning visas först.

Den andra härledda tabellen räknar antalet ord en given användare inte känner till för varje artikel. Den här tabellen används för att utesluta artiklar som innehåller 10 eller fler ord som användaren inte känner till.




  1. Hur man ändrar MySQL-serverns tidszon

  2. Hur lagrar man .pdf-filer i MySQL som BLOB-filer med PHP?

  3. Fråga för att få lägsta värde som är större än noll och är inte NULL

  4. Visa laddningsbild medan PHP körs