【问题标题】:Select Max DATE Record Without using a correlated subquery在不使用相关子查询的情况下选择 Max DATE Record
【发布时间】:2020-07-07 11:47:30
【问题描述】:

我有两个不同的数据库(不仅仅是两个不同的表)。我需要从一个database.table 中选择Max(Date),同时加入另一个database.table

在我下面的例子中,我想返回

+-------------+-----------+-------------+
| CompanyKey  | JobDate   | CompanyName |
+-------------+-----------+-------------+
|           1 | 1/10/2020 | Alpha Co    |
+-------------+-----------+-------------+

我修改此声明:

SELECT  rj.*, oc.CompanyName
FROM    Resources.Jobs rj  
JOIN    Organizations.Company oc ON oc.CompanyKey = rj.CompanyKey
WHERE   rj.CompanyKey = '1'

添加

 AND MAX(rj.JobDate)

返回错误码1111,无效使用组函数

我考虑过根据documentation 进行 LEFT JOIN,但由于我已经在进行 JOIN 以获取公司名称,因此我不确定如何梳理我的两个 JOIN 子句。

有什么帮助吗?

表结构

Resources.Jobs
+------------+-----------+
| CompanyKey |  JobDate  |
+------------+-----------+
|          1 | 1/10/2020 |
|          1 | 1/9/2020  |
|          1 | 1/8/2020  |
|          2 | 1/10/2020 |
+------------+-----------+

Organizations.Company
+------------+-------------+
| CompanyKey | CompanyName |
+------------+-------------+
|          1 | Alpha Co    |
|          2 | Beta Co     |
+------------+-------------+

【问题讨论】:

    标签: mysql sql group-by max


    【解决方案1】:

    您需要一个GROUP BY 子句,以便您可以使用聚合函数(例如MAX()),其中所有非聚合列都应出现:

    select oc.CompanyKey, max(rj.JobDate) JobDate, oc.CompanyName
    from Resources.Jobs rj  
    inner join Organizations.Company oc ON oc.CompanyKey = rj.CompanyKey
    where rj.CompanyKey = 1
    group by oc.CompanyKey, oc.CompanyName
    

    【讨论】:

    • 嗯,这将返回最旧的记录。实际上,这是这家公司的第一个记录。
    【解决方案2】:

    一种可能的方法是加入一个内联视图,该视图为每个公司键获取一个工作日期,如下所示:

     SELECT ...
          , m.max_job_date
          , ...  
       FROM t
    
       LEFT
       JOIN (
              SELECT j.companykey
                   , MAX(j.jobdate) AS max_job_date
                FROM Resources.Jobs j
               GROUP
                  BY j.companykey
            ) m
         ON m.companykey = t.companykey
    

    内联视图查询(派生表)m 可以单独运行。在外部查询的上下文中,内联视图就像一个表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多