mysql - 基于 ID 查找最新记录的 SQL 代码帮助
问题描述
这是我的旧问题后面的一个问题,因为我不清楚我在寻找什么。老问题可以在这里找到:需要知道这在 SQL 中是否可行
我有带有报价的销售订单,但是进行了新的报价修订,有时销售订单没有得到更新。所以我需要编写一个查询来查找任何没有最新报价的订单。
目前这是在 excel 中完成的,但我希望能够运行查询以获得相同的结果。
我的 SQL 或 SQL Server。
表和字段 销售订单行 - 销售订单 ID/当前报价 ID 报价 - 报价 ID
销售订单 ID 是一个数字字段 XXXXX。报价 ID 字段类似于 12345,如果创建了新修订,则会添加一个新报价并称为 12345-A,它会按每个修订的字母顺序上升。
示例数据
销售订单
omlSalesOrderID | omlQuoteID
53849 | 12345
31486 | 95648-A
12489 | 68745-D
68732 | 32149-E
引号
qmpQuoteID
12345
12345-A
12345-B
95648
95648-A
95648-B
95648-C
68745
68745-A
68745-B
68745-C
68745-D
32149
32149-A
32149-B
32149-C
32149-D
32149-E
我想看到的是
Sales order ID | Current Quote ID | Latest Quote ID
---------------|------------------|-----------------
53849 | 12345 | 12345-B
31486 | 95648-A | 95648-C
12489 | 68745-D | 68745-D
68732 | 32149-E | 32149-E
解决方案
在 MySQL 中,您可以使用substring_index()
和聚合:
select o.quoteId, o.salesorderid,
max(q.quote_id)
from orders o left join
quotes q
on o.quoteId = substring_index(q.quoteId, '-', 1)
group by o.quoteId;
在 SQL Server(或 MySQL)中,您可以LIKE
用于比较:
select o.quoteId, o.salesorderid,
max(q.quote_id)
from orders o left join
quotes q
on q.quoteId like concat(o.quoteId, '-%')
group by o.quoteId;
推荐阅读
- arduino - Arduino 未注册来自 STM32F407 的 SPI 传输
- arrays - 计算属性差异
- cassandra - Cassandra 虚拟节点
- java - 使用 Serenity BDD 进行自动化测试时出现内存溢出错误
- c - 使用 C 中的多个库链接外部变量
- java - 在接口 Java 中创建私有方法的正确方法
- dask - Dask 正则表达式提取比较失败并出现 NotImplementedError
- c# - VS Code noob here,关于launch.json的问题
- angular - Azure token hasgroups: true ,Adal angular, Graph API,
- r - 如何将非常大的 40gb ffdf 转换为 disk.frame?