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

MySQL КЪДЕ В Заявката - ПОРЪЧАЙ ПО съвпадение

Ако разбирам правилно, искате да сортирате резултатите по брой съвпадения в низходящ ред. За да направите това, можете да опитате:

SELECT movie
  FROM genre_rel 
 WHERE genre IN (1, 8, 3) 
 GROUP BY movie
 order by count(movie) desc

И ако искате филми, които отговарят на всички критерии, можете да използвате:

SELECT movie
  FROM genre_rel 
 WHERE genre IN (1, 8, 3) 
 GROUP BY movie
HAVING count(movie) = 3

АКТУАЛИЗАЦИЯ:

Това е най-доброто, което мога да направя в MySql. Не можете да използвате IN, защото не можете да извлечете информация за реда на филтрите. Ако добавите извлечена таблица като средство за филтриране, можете да добавите тази информация и да я използвате, за да покажете резултати по позиционни съвпадения. Имайте предвид, че не предоставяте никаква информация за поръчка в таблицата genre_rel, така че всъщност не знаете важността на жанровете за филм. Тази заявка ще ви даде съответстващи филми в низходящ ред по важност на жанровете в критериите:

SELECT movie
  FROM genre_rel 
  INNER join
  (
     select 1 genre, 1000 weight
     union all
     select 8, 100
     union all
     select 3, 10
  ) weights
 on genre_rel.genre = weights.genre
 GROUP BY movie
 order by sum(weight) desc

Имайте предвид, че всички филми с изключение на 5 принадлежат към всичките 3 жанра. Ако добавите колона към genre_rel, представяща реда на важност, може да измислите някаква математика (тегло - важност или нещо подобно).



  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 заявка - съединете 3 таблици заедно, групирайте по една колона и пребройте за другите 2

  2. Как да използвате тригер в MySql, за да направите външен ключ

  3. Какво е поведението на MySQL JOIN по подразбиране, INNER или OUTER?

  4. грешка промяна на таблица, добавяне на ограничение външен ключ получаване на грешка Не може да се добави или актуализира дъщерен ред

  5. Как да ускоря зареждането на данни в InnoDB (ЗАРЕЖДАНЕ НА ДАННИ INFILE)?