【发布时间】:2017-01-31 21:20:45
【问题描述】:
我有三张桌子
Personal_video
+------------------------------+
|presonal_video_id | title |
----------------------------
1 | test1|
2 | test2|
3 | test3|
4 | test4|
personal_video_tags
+------------------------------+
|tag_id | tag_title |
----------------------------
1 | august|
2 | 2016 |
3 | 2015 |
4 | 2014 |
personal_video_tag_mapping
+------------------------------+
|tag_id | presonal_video_id |
----------------------------
1 | 1 |
2 | 2 |
3 | 3 |
4 | 1 |
现在我想编写一个查询,它将根据常见标签返回视频,例如如果用户选择标签“August”和“2014”,那么查询应该返回连接到两个标签的视频。
目前我的查询是
SELECT presonal_video_id,title
FROM personal_video
WHERE presonal_video_id IN
(
SELECT personal_video_id AS PID
FROM personal_video_tag_mapping
WHERE tag_id IN ("1","2") AND privacy_level != 2
GROUP BY personal_video_id
HAVING COUNT( PID ) > 1
)
它给了我写结果,但是当有大数据时,它需要很长时间。谁能告诉我写这个查询的正确方法
提前谢谢你
【问题讨论】: