sql - 如何使用每个客户的最新状态更新提取数据
解决方案
您没有指定您正在使用的数据库。如果它实现了元组相等,你可以这样做:
select *
from t
where (customer, status_time) in (
select customer, max(status_time) from t group by customer
)
在 PostgreSQL 中,您可以使用惊人的DISTINCT ON
. 最坏的情况,您需要使用相关子查询;它速度较慢,但可以完成这项工作。
为 SQL Server 编辑
在 SQL Server 中,您可以使用 CTE 预先计算最大状态时间。例如,您可以这样做:
with
a as (
select customer, max(status_time) as max_time
from t
group by customer
)
select
from t
join a on a.customer = t.customer
and a.max_time = t.status_time
推荐阅读
- python-3.8 - 那么现在您可以轻松计算您的体重了吗?(Python)
- c++ - 不能在函数参数中使用“函数对象的常量引用”
- javascript - 如何在 React 中存储一个函数
- postgresql - 如何调用以几何为参数的postgres函数?
- c# - 为什么我会从 iText7 C# 中提取重复页面?
- javascript - SVG 背景图像拉伸
- reactjs - commitMutation 防止 setState 在 handleSubmit 中重新渲染组件
- python - 可以使用我的 IDE 执行程序,但不能通过在导入模块时双击来执行
- python-3.x - Python 向后悬挂带星星的三角形
- python - 如何提取输入的特定部分?