所以我有两个数据库表,分别称为“视频”和“相关”。表格“视频”具有3列:ID,观看次数和类别。表“ related”具有2列:a(与表“ video”的列ID相同)和b(与a相关的视频的ID)。
以下是表格“视频”的示例:
ID |意见|类别
1 | 11000 |音乐
2 | 13000 |艺术
3 | 14000 |音乐
4 | 60000 |音乐
5 | 80000 |艺术
......
表“相关”的示例
一个| b
1 | 2
1 | 3
2 | 1
2 | 4
2 | 5
......
如您所见,相关视频的ID也可以在“视频”表中找到。
所以现在我有了这个视图:
查看次数> = 10000 ====>类别=“音乐”
我需要将其转换为SQL查询。我需要说明以下几点:在观看次数超过10000的所有视频ID中,其中一些相关视频的类别为“音乐”。
希望您不要像看起来那样令人困惑...感谢您的时间,我正在等待任何可能的帮助...
最佳答案
select *
from video v1
where v1.id in (
select r.a
from related r
join video v2 on r.b = v2.id
where v2.category = 'music' )
and v1.views >= 10000
编辑
在下面的评论中,您要求的内容与原始问题完全不同-即,您现在想要“音乐”类别中的视频,其中相关视频的观看次数超过10000。您的新问题的SQL是这个。
select *
from video v1
where v1.id in (
select r.a
from related r
join video v2 on r.b = v2.id
where v2.views > 10000 )
and v1.category = 'music'
但请下次当您要问与原始问题不同的问题时,只需提出一个新问题即可。