gpt4 book ai didi

mysql - 计算 IN 运算符中的匹配单词数

转载 作者:行者123 更新时间:2023-11-29 22:26:48 25 4
gpt4 key购买 nike

我有一个小的 mysql 查询:

select t.title FROM title t
inner join movie_keyword mk on mk.movie_id = t.id
inner join keyword k on k.id = mk.keyword_id
where k.keyword IN (
select k.keyword
FROM title t
inner join movie_keyword mk on mk.movie_id = t.id
inner join keyword k on k.id = mk.keyword_id
where t.id = 166282
)
LIMIT 15

如您所见,它将返回 title 中至少具有一个相同关键字且 ID 为 166282 的电影的所有标题。

现在我遇到了问题,因为我还想计算 IN 运算符中匹配的关键字数量(假设我只想查看具有 3 个或更多相同关键字的标题),我尝试了一些方法使用聚合函数,但一切都失败了,所以我带着我的问题来到这里。也许有人可以给我一些建议或代码示例。

我也不确定这种“子查询方式”是否好,所以如果有一些更好的选择来解决我的问题,我愿意接受任何建议或提示。

谢谢!

@编辑

所以在遇到一些问题之后,我又遇到了一个。这是我当前的查询:

SELECT s.title,s.vote,s.rating,count(dk.key) as keywordCnt, count(dg.name) as genreCnt 

FROM series s

INNER JOIN series_has_genre shg ON shg.series_id = s.id
INNER JOIN dict_genre dg ON dg.id = shg.dict_genre_id

INNER JOIN series_has_keyword shk ON shk.series_id = s.id
INNER JOIN dict_keyword dk ON dk.id = shk.dict_keyword_id
WHERE dk.key IN (

SELECT dki.key FROM series si
INNER JOIN series_has_keyword shki ON shki.series_id = si.id
INNER JOIN dict_keyword dki ON dki.id = shki.dict_keyword_id
WHERE si.title LIKE 'The Wire'

)

and dg.name IN (

SELECT dgo.name FROM series so
INNER JOIN series_has_genre shgo ON shgo.series_id = so.id
INNER JOIN dict_genre dgo ON dgo.id = shgo.dict_genre_id
WHERE so.title LIKE 'The Wire'

)
and s.production_year > 2000
GROUP BY s.title
ORDER BY s.vote DESC, keywordCnt DESC ,s.rating DESC, genreCnt DESC
LIMIT 5

问题是,它非常非常慢。我应该改变什么才能运行得更快?

最佳答案

这对你有用吗:

select t.title, count(k.keyword) as keywordCount FROM title t
inner join movie_keyword mk on mk.movie_id = t.id
inner join keyword k on k.id = mk.keyword_id
where k.keyword IN (
select ki.keyword
FROM title ti
inner join movie_keyword mki on mki.movie_id = ti.id
inner join keyword ki on ki.id = mki.keyword_id
where ti.id = 166282
) group by t.title
LIMIT 15

请注意,我已更改嵌套查询内的表名称以避免混淆。

关于mysql - 计算 IN 运算符中的匹配单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com