Mysql 视图中的SQL查询

Mysql 视图中的SQL查询,mysql,sql,database,select,views,Mysql,Sql,Database,Select,Views,所以我有两个数据库表,叫做“video”和“related”。“视频”表有3列:id、视图和类别。表“related”有两列:a(与表“video”的列id相同)和b(与a相关的视频的id) 下面是表“视频”的示例: ID|视图|类别 1 | 11000 |音乐 2 | 13000 |艺术 3 | 14000 |音乐 4 | 60000 |音乐 5 | 80000 |艺术 表“相关”的一个示例 a|b 1 | 2 1 | 3 2 | 1 2 | 4 2 | 5 如您所见,相关视频的id也可以

所以我有两个数据库表,叫做“video”和“related”。“视频”表有3列:id、视图和类别。表“related”有两列:a(与表“video”的列id相同)和b(与a相关的视频的id)

下面是表“视频”的示例:

ID|视图|类别

1 | 11000 |音乐

2 | 13000 |艺术

3 | 14000 |音乐

4 | 60000 |音乐

5 | 80000 |艺术

表“相关”的一个示例

a|b

1 | 2

1 | 3

2 | 1

2 | 4

2 | 5

如您所见,相关视频的id也可以在“video”表中找到

所以现在我有一个观点:

  • 视图>=10000==>类别='Music'
我需要将其转换为SQL查询。我需要声明以下内容:从所有视图超过10000的视频ID中,哪些相关视频具有category=“music”

我希望你不会觉得它像看起来那样令人困惑…谢谢你的时间,我正在等待任何可能的帮助

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'

但是,下次你想问一个与原来不同的问题时,请提出一个新问题。

我想你是说直接相关的问题,是吗?或者1与4相关,因为1与2相关,而2与4相关。显示您的预期结果可能会很好。是的,我的意思是直接相关。想想youtube。这里有一段视频,然后是一些与此相关的其他视频。最终结果应该有一个所有相关视频(b列)的列表,其中包含类别为“音乐”的视频,这些视频与超过10000个视图的视频相关。这有点令人困惑!如果你看一下我提供的视图,它会变得更清晰D此语句未给出所需的结果。它还播放不属于“音乐”类别的视频,但它们的浏览量确实超过了10000次。最终结果应仅显示类别音乐(而非其他类别)中与超过10000次浏览的视频相关的视频。但我想你已经接近我想要的了!!:D顺便说一句,谢谢您的及时回复!你说从所有浏览量超过10000的视频ID中,哪些相关视频有category=“music”-这正是我给你的。我现在为你的新问题补充了一个答案。