mysql - MySql 从查询中获取第一个和最后一个结果
问题描述
我正在数据库中创建一些文档记录,每个文档可以有多个版本。每个新版本都是数据库中的一条新记录。为了将文档版本组合在一起,我为它们分配了一个共享的唯一 id groupId
。
我试图从数据库中获取的是最新的文档版本,但我也希望在日期创建原始文档:
documents table
- id
- group_id
- version
- created_at
示例记录:
id: 1, group_id: 'xyz', version: 1, created_at: date
id: 2, group_id: 'xyz', version: 2, created_at: date
id: 3, group_id: 'xyz', version: 3, created_at: date
etc...
我正在考虑使用 distinct 或 order by 然后在查询中添加限制 1 以获得 1 个结果:
SELECT * FROM documents
WHERE group_id='xyz'
ORDER BY 'created_at' DESC
LIMIT 1
但是,除了(或代替)最新版本的 created_at 日期之外,我如何还包括原始文档的 created_at 日期?
我知道我可以使用 重新运行查询,ORDER BY 'created_at' ASC LIMIT 1
但是有没有办法在 1 个查询中完成所有操作?
解决方案
您可以使用子查询:
SELECT * FROM documents
WHERE id in (
select min(id) FROM documents WHERE group_id='xyz'
union
select max(id) FROM documents WHERE group_id='xyz'
)
推荐阅读
- angular - Primeng Carousel 没有得到正确的样式
- vba - 在 VBA 中引用查询以发送多封电子邮件
- html - why my page is not showing background color when i have added the css
- node.js - 在socket.io“connection”中使用express“app.get”中定义的变量
- azure-web-app-service - 从应用服务到 Azure Key Vault 的身份验证失败
- git - 获取修改后的新位置
- ios - SwiftUI 基于计算属性显示警报
- php - Opcache 使用的内存不会改变
- vue.js - 将“proposal-object-rest-spread”插件添加到 babel.config.js 以修复 Microsoft Edge 错误 SCRIPT1028
- git - 如何在一个 github 仓库下添加多个项目文件夹?