gpt4 book ai didi

sql - 如何将一个表中的最新行连接到另一个表中?

转载 作者:行者123 更新时间:2023-12-03 01:25:21 25 4
gpt4 key购买 nike

我的数据如下所示:

entities
id name
1 Apple
2 Orange
3 Banana

流程将定期运行并为每个实体提供分数。该过程生成数据并将其添加到分数表中,如下所示:

scores 
id entity_id score date_added
1 1 10 1/2/09
2 2 10 1/2/09
3 1 15 1/3/09
4 2 10 1/03/09
5 1 15 1/4/09
6 2 15 1/4/09
7 3 22 1/4/09

我希望能够选择所有实体以及每个实体的最新记录分数,从而产生如下数据:

entities
id name score date_added
1 Apple 15 1/4/09
2 Orange 15 1/4/09
3 Banana 15 1/4/09

我可以使用此查询获取单个实体的数据:

SELECT entities.*, 
scores.score,
scores.date_added
FROM entities

INNER JOIN scores
ON entities.id = scores.entity_id

WHERE entities.id = ?

ORDER BY scores.date_added DESC
LIMIT 1

但我不知道如何为所有实体选择相同的内容。也许它正盯着我的脸?

非常感谢您抽出时间。

感谢您的精彩回复。我会花几天时间看看是否出现首选解决方案,然后我会选择答案。

更新:我已经尝试了几种建议的解决方案,我现在面临的主要问题是,如果实体尚未生成分数,它们就不会出现在列表中。

SQL 会是什么样子来确保返回所有实体,即使它们还没有发布任何分数?

更新:已选择答案。谢谢大家!

最佳答案

我这样做:

SELECT e.*, s1.score, s1.date_added 
FROM entities e
INNER JOIN scores s1
ON (e.id = s1.entity_id)
LEFT OUTER JOIN scores s2
ON (e.id = s2.entity_id AND s1.id < s2.id)
WHERE s2.id IS NULL;

关于sql - 如何将一个表中的最新行连接到另一个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/497535/

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