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

连接两个表,仅使用右表的最新值

令狐珂
2023-03-14
问题内容

我正在尝试联接2个表,但仅与一组记录中的最新记录联接。

左表:

部分

  • Part.PartNum

右表:

材料

  • Material.Partnum
  • Material.Formula
  • Material.RevisionNum

版本号从“ A”开始并增加。

我想加入PartNum的2个表,但只合并右边表中的最新记录。我已经看到了关于SO的其他示例,但是很难将它们放在一起。

编辑:

我发现第一个修订版本号是“ New”,然后它递增A,B,…它永远不会超过一个或两个修订版本,因此我不必担心遍历该序列。但是,如何选择以“
New”作为第一个修订版号的最新版本?


问题答案:

可以运行此命令的常规SQL语句为:

select P.PartNum, M.Formula, M.RevisionNum
from Parts P
join Material M on P.PartNum = M.PartNum
where M.RevisionNum = (select max(M2.RevisionNum) from Material M2
                       where M2.PartNum = P.PartNum);

重复以上有关第26版修订之后的注意事项。max(RevisionNum)可能会中断,具体取决于#26之后发生的情况。

编辑:

如果RevisionNum序列总是从w / NEW开始,然后以A,B,C等继续,那么就需要用更复杂(又杂乱)的东西替换max():

select P.PartNum, M.RevisionNum
from Parts P
join Material M on P.PartNum = M.PartNum
where (
      (select count(*) from Material M2 
              where M2.PartNum = P.PartNum) > 1
      and M.RevisionNum = (select max(M3.RevisionNum) from Material M3
                   where M3.PartNum = P.PartNum and M3.RevisionNum <> 'NEW')
      )
      or ( 
      (select count(*) from Material M4
              where M4.PartNum = P.PartNum) = 1
       and M.RevisionNum = 'NEW'
      )

必须有更好的方法来做到这一点。尽管这行得通-必须考虑一个更快的解决方案。

SQL小提琴:http
://sqlfiddle.com/#!3/70c19/3



 类似资料:
  • 问题内容: 我有和桌子。 询问: 返回474条记录 对于这些记录,我想添加的表成的表。 示例 :如果对于第一条记录,客户的id是9 ,地址的也是9,那么我想在地址表的cid列中插入9。 我试过了: 但这似乎不起作用。 问题答案: 这是Postgres UPDATE JOIN格式: 这是其他变体:http : //mssql-to- postgresql.blogspot.com/2007/12/u

  • 我对MySQL和PHP非常陌生,我正在努力处理两个表之间的内部连接。我正在构建一个脚本,它读取一个os商务数据库,并告诉我哪些产品当前处于过期订单状态。为了使产品处于过期订单状态,products_attributes表中的值设置为'134',但是它只读取product_id,而不读取'products'表中的product_model。 我想在products_attributes表中选择值为'

  • 问题内容: 我有两个表,如下所示: 我想列出参加活动17的所有人(包括学生和教师)的名字。无论如何,我可以获得以下结果: 无需创建新表(仅使用表达式或派生关系的嵌套)? 在actid上加入JOIN会得到如下结果: 我想我需要一种串联形式? 问题答案: 您可能(或可能不需要)对ID不唯一的内容进行处理,例如

  • 大家好,我在使用jparepository使用@query连接两个表时遇到了一个小问题,但我得到了错误。请帮我做这个。

  • 我试图连接两个表,但似乎有一个问题,我寻找的输出是有主题的行量。

  • 问题内容: 我正在使用两个MySQL数据库。我想将DB1中的表与SQLAlchemy中DB2中的表连接起来。 我在sqlalchemy中创建数据访问层时正在使用automap_base,如下所示… 我的表类就像 我正在这样加入 我收到这样的错误: 我们在数据库db1中创建了表t1,在数据库db2中创建了表t2。 是否可以在sqlalchemy ORM中的两个数据库表之间进行联接?如何实现呢? 问题