您好,我有两个表:
表1 - eod_stock
company_code | open | high | low | ltp | close | ycp | total_volume | total_value | datetime
表 2 - 公司
ID | code | name
此处公司代码=代码
因此为了获取所有名称和其他信息,我使用了以下代码:
但第一个给了我错误,第二个仅返回一行,但我需要所有 200 个公司及其相关信息。
select
company.code,
company.name,
eod_stock.open,
eod_stock.high,
max(eod_stock.datetime)
from
company
right join company on company.code= eod_stock.company_code;
和
select
eod_stock.company_code,
max(eod_stock.close),
eod_stock.total_volume,
eod_stock.total_trade,
eod_stock.high,
eod_stock.low,
eod_stock.ltp,
max(eod_stock.datetime),
company.name
from
eod_stock
inner join company on (company.code = eod_stock.company_code);
但第一个给了我错误,第二个仅返回一行,但我需要所有 200 个公司及其相关信息。
最佳答案
这里的技巧是从每个 company_code
的最大 datetime
列表开始,您可以使用以下基本查询来完成:
SELECT company_code, MAX(datetime) AS maxdatetime
FROM eod_stock
GROUP BY company_code
将其加入到获取公司代码、公司名称和日终值的查询中,您应该已准备就绪:
SELECT
company.code,
company.name,
eod_stock.open,
eod_stock.high
FROM eod_stock
INNER JOIN company ON company.code = eod_stock.company_code
INNER JOIN (
SELECT company_code, MAX(datetime) AS maxdatetime
FROM eod_stock
GROUP BY company_code) maxdt
ON maxdt.company_code = eod_stock.company_code AND
maxdt.maxdatetime = eod_stock.datetime
关于php - mysql 根据连接查询和最新日期时间获取所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20871115/