【问题标题】:Retrieve newest record from inner join table从内部连接表中检索最新记录
【发布时间】:2021-10-27 16:49:40
【问题描述】:

目前使用内部连接来拉取交易记录。这导致连接的左侧返回每个右侧表值的值。
*如果没有内连接,则从左侧表返回单个记录。
使用内连接右侧表,将为每个右侧记录返回一条左侧记录。

你知道如何从正确的表中区分“最新”记录吗?是否有任何时间戳列、ID 或类似的东西?

是的,有一个序列号。

理想的解决方案是只返回一个左行,以及右表中的最新记录。

【问题讨论】:

  • 你知道如何区分表中的“最新”记录吗?是否有任何时间戳列、ID 或类似的东西?因为,如果没有,你就不能做你想做的事。
  • 是的,那个表里有序号
  • 包含一个可重现的测试用例总是有帮助的。创建两个表的 DDL,插入一些数据的 DML,以及在这种情况下的预期结果。
  • 这不是INNEROUTER 问题的加入类型,而更多的是“我如何只加入最新记录”类型的问题。如果您对以下答案不满意,请提供示例数据和所需结果。

标签: sql oracle greatest-n-per-group


【解决方案1】:

细节不多,但希望你能适应这个:

SELECT
  table_with_one_row t
  INNER JOIN
  (
    SELECT u.*, ROW_NUMBER() OVER(PARTITION BY id_group ORDER BY sequence_number DESC) rn
    FROM 
      table_with_multiple_rows_per_row_in_t u
  ) x
  ON
    t.id = x.id_group AND x.rn = 1

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    • 2015-01-27
    • 1970-01-01
    相关资源
    最近更新 更多