加入中的MySQL LIMIT

时间:2017-04-11 15:34:33

标签: mysql sql database join subquery

我有一个表symbolsstatistics,它们按照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

在这里,我正在加入子查询表,我在symbolcreatedAt JOIN列,这是我的时间戳,按降序排列并限制它只获得第一行,但不幸的是我发现,我不允许访问Router的子查询中的主查询列。

那么解决这个问题的有效方法是什么。

提前致谢!

1 个答案:

答案 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`
     )