mysql - 在 mysql INNER JOIN 中嵌套 max(date) 语句

标签 mysql

我对围绕嵌套“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”。但我在逻辑或语法方面都没有成功。有什么可以赐教吗?

最佳答案

执行加入然后选择最后一条记录。下面是一种使用 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
                      );

关于mysql - 在 mysql INNER JOIN 中嵌套 max(date) 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38933169/

相关文章:

mysql - sql 'AND' 没有给出正确的结果

mysql - 表模式中 AUTO_INCRMENT=20018215 的含义是什么

mysql 精细具体命令类别

mysql 连接两个索引需要很长时间!

mysql - 如何从一个表中查询另一个表中不可用的数据,假设相同的数据也不应该在同一个表中?

python - Python 可行的数据库抽象层是什么

php - 分割 MYSQL 结果

mysql - 如何修复存储函数/触发器中的 "Can' t 更新表 testtab

mysql - 我应该关闭 MySQL 中的查询缓存吗?

php - 从两个不同的数据库查询中查找两个计数列之间的差异并在 PHP 中显示结果