我有两张table
公司
公司搬迁历史
关系是公司有很多搬迁历史
样本数据表公司
示例数据表company\u remocation\u histories
示例数据库->https://www.dropbox.com/s/e8uvuc9vvgacz0q/test.sql?dl=0
我想查询最近搬迁到某个地方的所有公司,例如到fr。只计算最后一个地点。
预期的数据是只有公司id 1(mib)才会列出。
公司id 3(skd)将被排除在外,因为尽管他们之前已经搬迁到fr,但最后一次搬迁是sg。
下面是我对sql查询的看法,它还没有工作(错误的结果)。如何解决这个问题?多谢堆栈溢出!
SELECT *
FROM `companies`
WHERE EXISTS (SELECT *
FROM `company_relocation_histories`
WHERE `companies`.`id` =
`company_relocation_histories`.`company_id`
AND `relocation_location` = 'FR'
AND `id` = (SELECT Max(id)
FROM `company_relocation_histories` AS `sub`
WHERE sub.relocation_location =
company_relocation_histories.relocation_location))
2条答案
按热度按时间k2fxgqgv1#
检查此查询。内部查询组重新定位历史以获取至少有两个或多个重新定位的公司id。
编辑:根据op的评论
57hvy0tb2#
您可以使用max(id)和count>1的子查询
这样你就有了所有的公司与多个地点和相关的最后一个地点