gpt4 book ai didi

mysql - (需要优化)- MySQL 从多个表中选择一个表中具有最新值的

转载 作者:行者123 更新时间:2023-11-29 11:26:17 24 4
gpt4 key购买 nike

我的数据库中有以下表格

  • 受益人。 PK: BeneficiaryId此表列出了健康保险数据库中的受益人。
  • 保单受益人。 PK: BeneficiaryId AND PolicyId这是受益人和保单之间多对多关系的结果表。
  • 政策。 PK: PolicyId此表列出了所有政策,每项政策都包含政策的开始日期和结束日期。
  • 利益表。 PK: PolicyId AND BenefitId该表是策略与权益之间多对多关系的结果表,它包含该策略的限制、每个权益的最大 session 数...等。
  • 福利 ID。 PK: BenefitId此表列出了优势及其类别。

我在这里想做的是从 TableOfBenefits 获取行一张 table Beneficiary ,基于他在PolicyBeneficiary中列出的最后一个政策。表。

我设法想出了这个连接的子查询来获取受益人的最后一个保单,然后将其与我需要的数据连接起来,它就完成了工作,但我不确定这是否是优化的解决方案我的问题。

SELECT 
Benefit.BenefitId
,Benefit.Name
,TableOfBenefits.BenefitLimit
,TableOfBenefits.Percentage
,TableOfBenefits.Sessions
FROM TableOfBenefits
INNER JOIN Benefit
ON TableOfBenefits.BenefitId = Benefit.BenefitId
INNER JOIN (
SELECT Policy.PolicyId
FROM Policy
INNER JOIN PolicyBeneficiary
ON Policy.PolicyId = PolicyBeneficiary.PolicyId
WHERE PolicyBeneficiary.BeneficiaryId = 2
ORDER BY PolicyId DESC LIMIT 1
) Policy
ON TableOfBenefits.PolicyId = Policy.PolicyId

我试图找出这是否是解决我的问题的最佳解决方案,或者是否有其他更优化的解决方案。

最佳答案

添加了小的修改,删除了 where 子句,并将其添加到联接操作中,在这种情况下,最初它将过滤该结果,然后将其与其他表联接

SELECT 
Benefit.BenefitId
,Benefit.Name
,TableOfBenefits.BenefitLimit
,TableOfBenefits.Percentage
,TableOfBenefits.Sessions
FROM TableOfBenefits
INNER JOIN Benefit
ON TableOfBenefits.BenefitId = Benefit.BenefitId
INNER JOIN (
SELECT Policy.PolicyId
FROM Policy
INNER JOIN PolicyBeneficiary
ON Policy.PolicyId = PolicyBeneficiary.PolicyId
AND PolicyBeneficiary.BeneficiaryId = 2
ORDER BY PolicyId DESC LIMIT 1
) Policy
ON TableOfBenefits.PolicyId = Policy.PolicyId

关于mysql - (需要优化)- MySQL 从多个表中选择一个表中具有最新值的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38149568/

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