我有一个 1:m 协会。
symbols
表中有很多行company_key_statistics
。company_key_statistics
有一个时间戳列createdAt
,指示行的创建时间。我需要加入最新symbols
的company_key_statistics
,但我只需要最新的company_key_statistics
。例如,我需要获取ORCL
并且MSFT
symbols
仅获取他们最新的company_key_statistics
.
到目前为止我已经尝试过了。
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');
Run Code Online (Sandbox Code Playgroud)
但不幸的是我发现我不能在子查询中使用父查询中的列JOIN
。
我怎样才能做到这一点?
我正在使用 ExpressJS 创建应用程序,并希望使用带密码的 MySQL,但连接字符串有问题
mysql://user@localhost:3306/db
在此字符串中指定连接数据库的密码
请帮我