视图中的 SQL 查询
Posted
技术标签:
【中文标题】视图中的 SQL 查询【英文标题】:SQL query from a View 【发布时间】:2014-05-20 19:11:32 【问题描述】:所以我有两个名为“视频”和“相关”的数据库表。 “视频”表有 3 列:id、views 和 category。 “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 中,哪些相关视频的类别 =“音乐”。
我希望您不会觉得它看起来那么令人困惑...感谢您的宝贵时间,我正在等待任何可能的帮助...
【问题讨论】:
我想你的意思是直接相关,是吗?或者是 1 与 4 相关,因为 1 与 2 相关,而 2 与 4 相关。 显示您的预期结果可能会很好。 是的,我的意思是直接相关。想想 youtube。有一个视频,然后是几个与该视频相关的其他视频。最终结果应包含所有相关视频(b 列)的列表,类别为“音乐”,这些视频与观看次数超过 10000 次的视频相关。这有点令人困惑!如果您看一下我提供的视图,它将变得更加清晰! :D 【参考方案1】: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'
但是,下次您想问与原来不同的问题时,请提出一个新问题。
【讨论】:
这个语句没有给出想要的结果。它还显示不属于“音乐”类别但观看次数超过 10000 次的视频。最终结果应仅显示与观看次数超过 10000 次的视频相关的音乐类别(而不是其他类别)中的视频。但我认为你接近我正在寻找的东西! :D 顺便感谢您的即时回复! 你说从所有观看次数超过 10000 的视频 ID 中,哪些相关视频的类别 =“音乐” - 这正是我给你的。我现在已经为您的新问题添加了答案。以上是关于视图中的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery SQL:将视图 A 中的子查询作为嵌套表嵌入视图 B
在 Redmine 核心视图中添加额外的 SQL 查询(插件中的覆盖视图)