首页 > 解决方案 > 没有 TOP 函数的 SQL JOIN 单值

问题描述

在基于最小值/最大值的 SQL 连接上可以找到大量示例,但是我的数据库不支持TOP函数,并且许多解决方案似乎都倾向于使用它。我很难理解它,因此尝试了一个简单的查询。

select 
    a.custID, b.lineNO, b.comment 
from 
    CUSTOMER a
left join 
    COMMENT b on a.custID = b.comcustID

我在这里与 single 建立了一对多的关系a.custID,但是 multiple b.comment。我怎样才能JOIN只有一个b.commentmax (b.lineNO)

MAX通过基于此示例的聚合函数执行此操作没有问题,但是需要运行(最小/最大)JOIN往往会不时出现,我想了解如何编写这样的查询。哪个对性能更好,加入单个最小值/最大值或运行聚合函数,例如MAX

不幸的是,不确定实际的数据库引擎,但是发现TOP它是第一个不从基本事物运行的函数。很有可能它来自 IBM。谢谢!

标签: sqljoinselectgroup-byleft-join

解决方案


请检查以下答案:

select a.custID, b.lineNO, b.comment from CUSTOMER a
left join comment b
  on  a.custID = b.comcustID and 
      b.bLineNo = (select max(bLineNo) from customer cin where cin.comcustID = b.comcustID) 

推荐阅读