最强的多个LIKE运算符顺序

问题描述 投票:0回答:1

我有以下查询:

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%')

如果结果<12

((类别'%romance%'和类别喜欢'%comedy%')或(类别''%romance%'和类别'%horror%')或(类别''%comedy%'和类别'' %horror%')

如果结果<12

((类别'%romance%'或类别'%comedy%'或类别'%horror%')“]]

[我的意思是,如果有一部电影具有这三种类型,我想首先获得它,否则我获得一部具有浪漫和喜剧或浪漫与恐怖或喜剧与恐怖的电影。

mysql sql sql-order-by sql-like
1个回答
3
投票

条件运算符为真时返回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
© www.soinside.com 2019 - 2024. All rights reserved.