回答

收藏

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

技术问答 技术问答 116 人阅读 | 0 人回复 | 2023-09-13

我有这样的数据:
1 B: M* H6 p+ mentitiesid         name1                                                                                                                                                                                                                                                                                                                                                                              Apple2                       Orange3  3                                                                                                                                                                                                                                                                                                                               Banana该过程将定期运行,并对每个实体进行评分。生成数据并将其添加到评分表中,如下所示:! J" L. R1 a, M- q
scores id  entity_id    score   date_added   1/2/092                                                                                                                                                                                                                                                                                    10                                                                                                                                                                                                        10                                                                                                              我希望为每个实体选择所有实体和最新记录的分数,以获得以下数据:" s) K0 O' O* X2 L9 v$ J7 o
entitiesid name     score  date_added1  Apple            1/4/092Orange            1/4/093Banana    15      我可以使用以下查询获取单个实体的数据:
4 w# |5 d0 \; A# H9 u6 @9 ?9 v' hSELECT entities.*,       scores.score,       scores.date_added FROM entitiesINNER  JOIN scoresON entities.id = scores.entity_idWHERE entities.id = ?ORDER BY scores.date_added DESCLIMIT 1但我不知道如何为所有实体选择相同的内容。也许它在盯着我看?% R+ m0 [; [) u! G! `
非常感谢您抽出宝贵的时间。
! T* i) D: O5 f! y, x1 x感谢您的好评。我会花几天时间检查首选解决方案是否冒泡,然后选择答案。
3 i. y8 C; }& J2 d: F: |更新:我尝试了几个解决方案,现在我面临的主要问题是,如果一个实体没有生成分数,它们就不会出现在列表中。: N. e/ n) t* t2 }2 Q+ [1 q' d' B
即使没有发布任何分数,SQL如何确保所有实体都返回?: E2 \: T) K2 t' v4 A6 T. i
更新:已选择答案。!
0 N3 D, g2 C- D8 z                                                               
; G6 e# f( c8 f6 u- e) y/ T3 c    解决方案:                                                                - r1 n8 A; e; d( O% T8 [% v
                                                                我这样做:' y# v0 F; ~/ s7 w) l7 p/ _
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;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则