sql-server - 重写存储过程以按组返回第一个元素
问题描述
我有一个返回每个组的第一个元素的查询,但我正在使用相关的子查询来执行此操作:
select
id,
date,
data
(select top 1
id,
date,
data
from table as t2
where t2.id = t1.id
order by t2.date) as first
from table t1;
目标是返回所有数据,以及每行的第一项。
如何重写此查询,使其不会扫描整个表 N 次以查找表中的 N 条记录?
解决方案
您可以从仅获取第一行的 CTE 开始,id
然后将主查询加入到 CTE 上id
。
推荐阅读
- mongodb - 带有索引的小型集合上的 $lookup/$sort 性能不佳
- next.js - 将 url 更改为默认页面 next.js
- spring - 为什么我需要创建一个 SpringApplicationContext 的 Bean?
- firebase - 我在 Flutter 中遇到了 android 文件夹中的 settings.gradle 的问题
- python - Python async call_later 在 while 循环中
- web-scraping - F# Data:如何从网站获取所有导航链接?
- python - 熊猫 DataFrame.value_counts().plot().bar() 和 DataFrame.value_counts().cumsum().plot() 不使用相同的轴
- ruby-on-rails - Rails 可以使用会话存储而不在客户端上放置任何东西,没有 session_id 吗?
- reactjs - React Hooks useRef 初始化问题,useRef 仅适用于后续调用
- arrays - 访问 ncurses 中的 WINDOW 结构数组时出现分段错误