我有以下查询:
SELECT * FROM table_name
WHERE (genre LIKE '%romance%'
OR genre LIKE '%comedy%'
OR genre LIKE '%horror%')
ORDER BY *the column that has more*
或类似的东西
$ sql =“ SELECT * FROM表在哪里(类型为'%romance%'和类型为'%comedy%'和类型'%horror%')
((类别'%romance%'和类别喜欢'%comedy%')或(类别''%romance%'和类别'%horror%')或(类别''%comedy%'和类别'' %horror%')
((类别'%romance%'或类别'%comedy%'或类别'%horror%')“]]
[我的意思是,如果有一部电影具有这三种类型,我想首先获得它,否则我获得一部具有浪漫和喜剧或浪漫与恐怖或喜剧与恐怖的电影。
条件运算符为真时返回1
,为假时返回0
。因此,将匹配的数量相加。
ORDER BY gender LIKE '%romance%'
+ gender LIKE '%$comedy%'
+ gender LIKE '%$horror%' DESC
最好将表标准化。添加表movie_genre
,例如
CREATE TABLE movie_genre (
movie_id INT(11) NOT NULL, # foreign key to movie.id
genre_id INT(11) NOT NULL # foreign key to genre.id
);
然后您将执行类似的查询:
SELECT m.*
FROM movie AS m
JOIN movie_genre AS mg ON m.id = mg.movie_id
JOIN genre AS g ON g.id = mg.genre_id
WHERE g.name IN ('comedy', 'romance', 'horror')
GROUP BY m.id
ORDER BY COUNT(*) DESC