sql - 仅返回特定文档 ID 的最近邮寄日期
问题描述
我正在尝试让 Order By 子句适用于查询,但它似乎无法正常运行。我的目标如下
- 搜索特定用户 ID
- 仅搜索两个不同文档 ID(55 和 57)的最新邮寄日期
- 按邮件日期对搜索结果进行排序,以便在列表顶部显示最近的邮件日期
- 只返回第一行,这应该是列出的任一文档 ID 的最新邮寄信件
我遇到的问题是该ORDER BY
条款似乎不起作用。我正在测试它的用户有一个带有doc_def_id
“55”和mailed_date
06/22/2018 的文档,以及一个带有doc_def_id
“57”和mailed_date
07/08/2018 的文档。据我所知,它应该给我doc_def_id
“57”,因为它有一个更新的邮件日期,但无论如何它似乎忽略了该ORDER BY
条款并给了我第一个结果(好像没有ORDER BY
条款)。
代码:
SELECT
ual.user_id,
ual.account_id,
dr.mailed_date,
dr.doc_def_id
FROM doc_request dr
JOIN user_account_link ual
ON dr.account_id = ual.account_id
WHERE
ual.user_id = '123456'
AND dr.mailed_date = (
SELECT Max(dr.mailed_date)
FROM doc_request
WHERE ual.user_id = '123456'
AND dr.doc_def_id IN ('55','57')
)
AND ROWNUM <= 1
ORDER BY dr.mailed_date DESC;
解决方案
较新的 Oracle 版本支持 ANSI SQLFETCH FIRST
子句:
SELECT ual.user_id, ual.account_id, dr.mailed_date, dr.doc_def_id
FROM doc_request dr
join user_account_link ual ON dr.account_id = ual.account_id
WHERE ual.user_id = '123456'
AND dr.doc_def_id IN ('55','57')
ORDER BY dr.mailed_date DESC
FETCH FIRST 1 ROW ONLY
推荐阅读
- postgresql - 如何在使用聚合函数时将几何列的类型保留为几何而不是文本?
- c# - Entity Framework Core 3.1 Load() 异步显式加载
- flutter - Dart 函数没有像我希望的那样响应
- google-admin-sdk - 服务帐户是否需要额外定价?
- sql - SQL Query 在 XML 节点中进行迭代以检查值并返回记录
- javascript - 如何在 JS 中获取用户输入并分配给本地对象,推送到全局,然后打印到 HTML 的一部分
- c++ - 矢量安全擦除其记忆
- javascript - 编写一个方法,该方法接受一个数组和一个对象,并返回一个数组及其在对象中的对应值
- azure - 无法使用 Azure Monitor REST API 获取自定义指标(用于 Azure Linux 虚拟机)
- powershell - Powershell:如何从 csv Header 的字符串中删除引号