gpt4 book ai didi

Mysql - 从左连接获取多个最后结果

转载 作者:行者123 更新时间:2023-11-30 00:03:31 24 4
gpt4 key购买 nike

我对我的英语感到抱歉。

我有 3 张 table 。联系人、联系人属性、联系人值

联系方式:

-------------------
|id | name |
-------------------
|1 | bob |
|2 | boby |

联系人属性:

-------------------
|id | code |
-------------------
|1 | email |
|2 | sex |

联系人值:

------------------------------------------------------------------------
|id | contact_id | attribute_id | creation | value
------------------------------------------------------------------------
|1 | 1 | 1 | 2014-07-17 12:12:49 | bob@bob.com
|2 | 1 | 2 | 2014-07-17 12:12:56 | Male
|3 | 1 | 2 | 2014-07-17 14:15:58 | Female

现在我正在寻找一个查询,用于获取一个联系人的所有唯一属性,但最后一个唯一属性。找到一种方法让我的结果查询看起来像这样:

------------------------------------------
|name |contact_id | attribut_id | value
------------------------------------------
|Bob |1 | 1 | bob@bob.com
|Bob |1 | 2 | female

我尝试了这个查询:

SELECT * FROM contact AS c
LEFT JOIN contact_value as v ON c.id = v.contact_id
WHERE c.id = '1'
AND v.creation IN
(SELECT MAX(v2.creation) FROM contact_value AS v2 GROUP BY v2.attribute_id)

但结果是:

------------------------------------------
|name |contact_id | attribut_id | value
------------------------------------------
|Bob |1 | 1 | bob@bob.com
|Bob |1 | 2 | male
|Bob |1 | 2 | female

如果有人知道一种简单的方法来获得我想要的结果?我简化了表格以使其更具可读性。感谢您的宝贵时间,再次为我糟糕的英语感到抱歉。

最佳答案

您可以对子查询进行联接,该子查询将检索按 contact_id 和 attribute_id 分组的最大创建值和其他值

类似的事情

select c.name, cv.contact_id, cv.attribute_id, cv.value
from contact c
join contact_value cv on cv.contact_id = c.id
join
(select max(creation) as maxCreation, contact_id, attribute_id
from contact_value
group by contact_id, attribute_id) s
on cv.contact_id = s.contact_id and
cv.attribute_id = s.attribute_id and
cv.creation = s.maxCreation

参见SqlFiddle

关于Mysql - 从左连接获取多个最后结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803765/

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