我对围绕嵌套“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/