gpt4 book ai didi

mysql如何根据最新的关系数据进行查询

转载 作者:行者123 更新时间:2023-11-29 09:55:03 25 4
gpt4 key购买 nike

我有两张 table

  1. 公司
  2. company_relocation_histories

关系是公司有很多搬迁历史

示例数据表公司

enter image description here

示例数据表company_relocation_histories

enter image description here

示例数据库 -> https://www.dropbox.com/s/e8uvuc9vvgacz0q/test.sql?dl=0

我想查询最近搬迁到某个地方的所有公司,例如搬到法国。仅计算最后一个位置。

仅列出公司 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))

最佳答案

检查此查询。内部查询对 reloaction_histories 进行分组,以获取至少有两次或两次以上重定位的 company_id。

select * from companies 
where id in (
select company_id
from company_relocation_histories
group by company_id
having count(*) = 2
);

编辑:根据OP的评论

SELECT * 
FROM companies
WHERE id IN (SELECT company_id
FROM (SELECT company_id,
Lead(relocation_location) OVER(ORDER BY id) x,
Count(*) OVER (partition BY company_id) cnt
FROM company_relocation_histories) t
WHERE x = 'FR'
AND cnt = 2
GROUP BY company_id);

关于mysql如何根据最新的关系数据进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54002312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com