所以我有两个数据库表,分别称为“视频”和“相关”。表格“视频”具有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'


但请下次当您要问与原始问题不同的问题时,只需提出一个新问题即可。

10-07 19:43
查看更多