【问题标题】:Make 2 SQL select queries from 2 tables inside an other select query从另一个选择查询中的 2 个表进行 2 个 SQL 选择查询
【发布时间】:2012-10-15 15:34:12
【问题描述】:

我有 2 个 SQL 表:"episode""topic",每个主题和剧集都有一个视频(一个剧集包含多个主题,但这对我的问题并不重要)。他们有自己的字段,但有共同的"title", "date", "video_url""count"(计数是观看视频的次数)。

我想根据计数字段仅使用一个查询进行前 5 个选择。

所以我需要合并查询:

select title, date, video_url, count from episode order by count desc 

和“来自主题”的相同查询。

【问题讨论】:

    标签: sql select merge


    【解决方案1】:
     select top 5 *
     from
     (
          select title, date, video_url, count from episode
          union all
          select title, date, video_url, count from topic
     ) as A
     order by count desc
    

    您可以添加类型名称以找出它是剧集还是主题。您也可以将top 5 添加到子查询中,这样服务器就会知道他不需要获取所有记录

     select top 5 *
     from
     (
          select top 5 title, date, video_url, count, 'episode' as type_name from episode order by count desc
          union all
          select top 5 title, date, video_url, count, 'topic' as type_name from topic order by count desc
     ) as A
     order by count desc
    

    【讨论】:

    • 第一个答案很好,因为它也为消除相同的视频留下了空间。如果你放一个 Select Distinct Top 5 * etc 等
    • 我已将top 5 添加到子查询中,以确保优化器在合并之前不会从每个表中获取超过 5 条记录。不知道要不要删视频所以没加distinct
    • 是的,这更好。但我说的是 1 个视频的可能性,该视频的观看次数最多同时存在于一个情节和一个主题中。然后它仍然会从两个表(作为第 1 行)传递到合并中,并且将是结果选择的前 2 行。
    • 非常感谢,已经完美了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多