【问题标题】:Nesting a max(date) statement in a mysql INNER JOIN在 mysql INNER JOIN 中嵌套 max(date) 语句
【发布时间】:2016-08-13 13:22:27
【问题描述】:

我对围绕嵌套的“select max(date)”样式语句的逻辑/语法感到困难。让我试着解释一下。我的语句从三个表中提取数据:

表 #1 (table1_companies) [id、公司名称、行业]

表 #2:(table2_companydata) [id, companyname, data, date_added]

表 #3:(table3_watchlist) [id、公司名、用户名]

我尝试执行的语句从表 3 中获取公司名称,INNER JOINS 表 1 中的“行业”,然后 INNER JOINS 表 2 中的最新公司信息(基于最后日期)。它是表 2 每个公司可以有很多行,我只需要基于添加的最新日期的最后一个。我当前的(简化的)声明没有尝试获取最后一个日期是:

SELECT 
table1_companies.industry, 
table2_companydata.data, 
table3_watchlist.* 

FROM 
table3_watchlist 
INNER JOIN table1_companies ON table1_companies.companyname =          table3_watchlist.companyname INNER JOIN table2_companydata ON table2_companydata.companyname = table3_watchlist.companyname WHERE   username='username'");

我想我需要在第二个 INNER JOIN 中插入一个“SELECT max(date_added) FROM table2_companydata”。但是我在逻辑或语法上都没有成功。有没有大神能赐教?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    执行joins 和然后选择最后一条记录。这是一种使用where 子句作为逻辑的方法:

    SELECT c.industry, cd.data, w.* 
    FROM table3_watchlist w INNER JOIN 
         table1_companies c
         ON c.companyname = w.companyname INNER JOIN
         table2_companydata cd
         ON cd.companyname = w.companyname
    WHERE username = 'username' AND
          cd.date_added = (select max(cd2.date_added)
                           from table2_companydata cd2
                           where cd2.companyname = cd.companyname
                          );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多