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

Подреждане на артикули със съвпадащи етикети по брой съвпадащи етикети

Опитайте нещо подобно:

select article_id, count(tag_id) as common_tag_count
from articles_tags 
group by tag_id
where tag_id in (
    select tag_id from articles_tags where article_id = 2
) and article_id != 2
order by common_tag_count desc;

Синтаксисът може да се нуждае от малко настройване за MySQL.

или този, който наистина работи:;-)

SELECT at1.article_id, Count(at1.tag_id) AS common_tag_count
FROM articles_tags AS at1 INNER JOIN articles_tags AS at2 ON at1.tag_id = at2.tag_id
WHERE at2.article_id = 2
GROUP BY at1.article_id
HAVING at1.article_id != 2
ORDER BY Count(at1.tag_id) DESC;


  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. Защо не мога да използвам променлива като име на таблица в съхранена процедура?

  3. Разработка на Rails - Не мога да се свържа с MySQL сървър на 'localhost' (10061)

  4. MySQL:Как да разрешите отдалечена връзка с mysql

  5. Вмъкването в mySQL на JSON кодирана стойност със специални знаци е неуспешна