当前位置: 首页 > 面试题库 >

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

南门棋
2023-03-14
问题内容

我有看起来像这样的数据:

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;


 类似资料:
  • 问题内容: 我有两个看起来像这样的表: 表:案例 id 名称 状态 case_no 表:注意事项 id case_id note_date 注释 我希望能够创建一个查询,以从案例表中获取数据,并仅从注释表中获取案例表中每一行的最新条目。到目前为止,我根本没有运气。 任何指针将不胜感激 问题答案: 这只会返回带有注释的案例: 如果需要所有案例,无论是否附带注释:

  • 如何将输出连接到? 在其JList上有一个监听器,以便将选定的行输出到控制台。我怎么能直接输出到输出的? 是否可以触发一个由Main拾取的事件?就足够了吗? Main.java:

  • 我有两个表,一个有212,000条记录(不推荐使用的记录),另一个有10,500,000条记录 在删除记录之前使用外部联接有意义吗?我在想,如果可能的话,这可以帮助我跟踪被删除的内容

  • 问题内容: 如何将输出连接到? 上有一个侦听器,以便将选定的行输出到控制台。如何将输出定向到JTextPane打开输出? 会引发一个事件Main吗?会的足矣? Main.java: 问题答案: 这是一个使用观察者模式的示例,。请注意,也有可能收听组合的模型。

  • 问题内容: 我想在MySQL中将数据从一个表复制到另一个表。 表1(现有表): 表2(新表) 我想将一些数据字段从表1复制到表2。 可以使用MySQL查询完成吗? 问题答案: 这将做您想要的: 如果要包括table1中的所有行。否则,如果只想添加table1的子集,则可以在末尾添加WHERE语句。 我希望这有帮助。

  • 我想将table 1的内容复制到table 2中,但它不是直接复制,因为table 2包含的列比表1多。结构类似于这样: 表 1 { 列 2 列 4 列 6 } 表2{column1 column2 column3 column4 column5 column6} 我想做的是将table1到table2中的每一行相加,并为缺少的列设置默认值。任何帮助都将不胜感激。