首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我们如何在MySQL中连接公共表?

我们如何在MySQL中连接公共表?
EN

Stack Overflow用户
提问于 2018-11-13 02:15:20
回答 1查看 56关注 0票数 0

我在Postgres中有一个复杂的查询,我正试图在MySQL中进行转换。Postgres查询有三个链式查询。前两个创建两个公共表,最后一个查询对这两个公共表进行连接。查询的简化版本如下所示。有办法在MySQL中连接这两个公共表吗?我需要这个查询来运行5.6、5.7和8.0,所以8.0中CTE的新特性不是一个解决方案。

代码语言:javascript
复制
(Select table1.y_id as year_id, 
       SUM(table1.total_weight) AS metric_value
       from (SELECT student_name,y_id,total_weight from student_metrics where y_id>10 ) table1
       group by year_id
       order by metric_value DESC
       limit by 5
 )table2

第三个查询应该在table1和table2上连接table1.y_id = table2.year_id.

为了更好地了解每个查询所做的事情:

  1. 查询1从主表(例如表1)获取数据,并根据某些条件将其存储在公共表中。
  2. 查询2根据用户指定的列对查询1中获得的行进行分组和排序,并将其限制在“N”顶部。
  3. 查询3通过完成表1.id上的连接,只返回这些N个唯一Ids(从表2获得)的所有详细信息(表1) table2.id
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 02:48:09

您可以简单地重复table1子查询:

代码语言:javascript
复制
select
    table1.*
from
    (select student_name,y_id,total_weight from student_metrics where y_id>10) as table1
    inner join (
        select tbl1.y_id as year_id, 
        sum(tbl1.total_weight) as metric_value
        from
            (select student_name,y_id,total_weight from student_metrics where y_id>10 ) as tbl1
       group by tbl1.y_id
       order by sum(tbl1.total_weight) desc
       limit by 5
       ) as table2 on table1.y_id = table2.year_id;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53272801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档