sql - 没有 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.comment
值max
(b.lineNO)
MAX
通过基于此示例的聚合函数执行此操作没有问题,但是需要运行(最小/最大)JOIN
往往会不时出现,我想了解如何编写这样的查询。哪个对性能更好,加入单个最小值/最大值或运行聚合函数,例如MAX
?
不幸的是,不确定实际的数据库引擎,但是发现TOP
它是第一个不从基本事物运行的函数。很有可能它来自 IBM。谢谢!
解决方案
请检查以下答案:
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)
推荐阅读
- c - 左值需要作为 c 中赋值错误的左操作数
- jquery - 用于更改 Blogger 标签名称中字符颜色的 jQuery 代码
- c++ - 创建无序地图实例时出错
- html - 手工制作的可重用 HTML 组件 | 与 Thymeleaf 语法冲突
- linux - 如何在 github 操作的帮助下使 npm run 在本地机器上构建?
- python - 如何在 SQLAlchemy 中创建一个以 Interval 作为主键的表?
- nestjs - 配置的动态配置和持久存储
- servlets - 为什么我在加载 pos tagger 时出错?
- next.js - Next.JS -> 提供了一个空的 PostCSS 插件
- flutter - Flutter:尝试获取 api 数据但收到此错误 => type 'String' 不是 type 'FutureOr 的子类型