我有一个表symbols
和statistics
,它们按照1:m关联类型关联,但我只需要为少数statistics
提取最新的symbols
。例如
我需要获得statistics
symbols
,其中ORCL, SNAP, MSFT
具有股票代码JOIN
。使用statistics
,我获得symbols
的所有symbol
,但每个SELECT `symbols`.`id`, `symbols`.`symbol`, `statistics`.`marketCapitalization` FROM `symbols`
LEFT JOIN (
SELECT `s`.`companyId`, `s`.`marketCapitalization` FROM `company_key_statistics` AS `s`
WHERE `s`.`companyId` = `symbols`.`id` ORDER by `createdAt` DESC LIMIT 1
) AS `statistics`
ON `symbols`.`id` = `statistics`.`companyId`
WHERE `symbols`.`symbol` IN ('ORCL', 'SNAP');
我只需要最新版本。所以我试过这个
statistics
在这里,我正在加入子查询表,我在symbol
列createdAt
JOIN
列,这是我的时间戳,按降序排列并限制它只获得第一行,但不幸的是我发现,我不允许访问Router
的子查询中的主查询列。
那么解决这个问题的有效方法是什么。
提前致谢!
答案 0 :(得分:0)
试试这个伙伴:
SELECT `symbols`.`id`, `symbols`.`symbol`,
`company_key_statistics`.`marketCapitalization` FROM `symbols`
LEFT JOIN `company_key_statistics` on
`company_key_statistics`.`companyId`= `symbols`.`id`
WHERE `symbols`.`symbol` IN ('ORCL', 'SNAP')
GROUP BY `symbols`.`symbol`
HAVING `company_key_statistics`.`createdAt` in (
SELECT MAX(`company_key_statistics`.`createdAt`)
FROM `company_key_statistics`
GROUP BY `company_key_statistics`.`companyId`
)