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

Сложната MySQL заявка дава неправилни резултати

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

Първата извлечена таблица избира уникални статии, от които даден потребител знае една или повече думи, както и максималния order стойността на тези думи. Максималната стойност на поръчка се използва за сортиране на крайните резултати, така че статиите, съдържащи думи от висок ред, да се показват първи.

Втората извлечена таблица отчита броя на думите, които даден потребител не знае за всяка статия. Тази таблица се използва за изключване на статии, които съдържат 10 или повече думи, които потребителят не знае.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - MySQL PDO максимален размер на заявката

  2. Как да извличам данни от базата данни в таблицата на всеки 15 минути?

  3. Отрязване на резултатите от груповите конкат

  4. Как да персонализирате вашите MySQL и MariaDB архиви с ClusterControl

  5. SQL заявка за интервали от дата