为评估为 true 的 IN 条件元素设置限制

2024-03-05

table: t
+--------------+-----------+-----------+
| Id           | price     | Date      |
+--------------+-----------+-----------+
|  1           | 30        | 2021-05-09|
|  1           | 24        | 2021-04-26|
|  1           | 33        | 2021-04-13|
|  2           | 36        | 2021-04-18|
|  3           | 15        | 2021-04-04| 
|  3           | 33        | 2021-05-06|
|  4           | 46        | 2021-02-16|
+--------------+-----------+-----------+

我想选择 id 为 1,2,4 的行,并按日期降序为每个 id 获取最多 2 行。

+--------------+-----------+-----------+
| Id           | price     | Date      |
+--------------+-----------+-----------+
|  1           | 30        | 2021-05-09|
|  1           | 24        | 2021-04-26|
|  2           | 36        | 2021-04-18|
|  4           | 46        | 2021-02-16|
+--------------+-----------+-----------+

就像是:

Select * from t where Id IN ('1','2','4') limit 2 order by Date desc; 

这将限制获取的总体结果。


Use row_number():

select id, price, date
from (select t.*,
             row_number() over (partition by id order by date desc) as seqnum
      from t
      where id in (1, 2, 4)
     ) t
where seqnum <= 2;

最有效的方法可能是相关子查询:

select t.*
from t
where t.id in (1, 2, 4) and
      t.date >= coalesce( (select t2.date
                           from t t2
                           where t2.id = t.id
                           order by t2.date desc
                           limit 1,1
                           ), t.date
                        );

为了性能,您需要一个索引(id, date)。此外,如果同一日期给定 id 有多行,则可能会返回重复项。

是一个数据库小提琴。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为评估为 true 的 IN 条件元素设置限制 的相关文章

随机推荐

  • 如何在React项目中添加Service Worker

    我想在我的 React 项目中添加 Service Worker 项目已准备就绪 默认服务似乎不起作用 即使当我尝试导入它时 它也会出现以下错误 尝试导入错误 registerServiceWorker 不包含默认导出 导入为 regist
  • GWT 模块的模块标记中的 rename-to 是什么意思?

    GWT 模块中模块标记的 rename to 属性是什么意思 是可选的吗 它 导致编译器表现得好像模块的名称与长的 完全限定的名称不同 http code google com webtoolkit doc latest DevGuideO
  • 在 MySql 中提取具有特定模式的子字符串

    我有一个文本字段 如下所示 option A sum A g3et B 我想获取里面的文字 没有重复项 获得意义 A B 不可能出现双重like的情况 我知道这是一种在数据库中保存数据的可怕方法 我无法更改数据的保存方式 我只需要从本专栏中
  • 红宝石。合并嵌套哈希而不覆盖

    我有一个嵌套哈希 X 1 2 3 gt X O 2 3 gt X O X 3 gt X O X O 我想合并给定的嵌套哈希 X 1 2 3 gt X O 2 3 gt X O 2 X gt X O O X 这样 X 1 2 3 gt X O
  • 如何更改Windows Phone应用程序中按钮的背景颜色?

    我正在使用 C 和 silverlight 4 开发 Windows Phone 7 应用程序 我是 silverlight 的新手 我的应用程序中有两个用于不同目的的按钮 我想在单击按钮时动态更改按钮的颜色 所以我使用下面的代码 Inco
  • 办公自动化、VSTO 和 Open XML SDK 之间有什么区别?

    办公自动化 VSTO 和 Open XML SDK 之间有什么区别 我们需要所有这些还是其中一些已经过时了 办公自动化是指使用 COM 互操作以编程方式操作 Office 程序 或更常见的是通过 Office 程序操作 Office 文档
  • 默默忽略remove()

    实体 A 引用 多对一 实体 B 具有从 B 到 A 的反向 映射 引用 此外 还存在 A 到 C 的引用以及 C 到 A 的反向引用 当我发出entityManager remove A 然后flush 时 不会生成 删除 但也没有例外
  • ld:找不到 AudioUnit 框架

    我正在添加另一个项目 即使我添加了所需的所有库 我也会收到此错误 这是错误详细信息 Ld Users alialzahrani Library Developer Xcode DerivedData IMS3 ezltqoccjhjpvua
  • 如何在 React.js 中预加载图像?

    如何在 React js 中预加载图像 我有下拉选择组件 其工作方式类似于菜单 但我必须预加载项目的图像图标 因为有时它们在第一次打开时不可见 我努力了 https github com sambernard react preload h
  • 使用 xslt 从 xml 转换而来的平面文件中的行数

    下面是我用来将 xml 转换为平面文件的 xsl 它还满足各种其他所需条件
  • iOS7 深色键盘和浅色键盘之间的切换

    In iOS7 we have both a dark and a light keyboard Is it possible for me to change between these in my app by code textfie
  • 当任何包含公式的单元格发生更改时触发宏

    我有一个包含大约 50 个单元格 包含公式 的工作表 这些单元格根据外部工作簿中的单元格而变化 当这些单元格中的任何一个更改其值时 我想触发某个宏 Worksheet change 事件不起作用 并且 Worksheet Calculate
  • C# RichEditBox 性能极慢(加载 4 分钟)

    The RichEditBoxC 中的控件 我使用 VS 2005 性能较差 我将包含 45 000 行彩色文本的 2 5 MB RTF 文件加载到控件中 需要 4 分钟 我将相同的 RTF 加载到 Windows XP 写字板的 RTF
  • Python Flask 从像 render_template 这样的变量渲染文本

    我知道烧瓶功能render template 我必须给出模板的文件名 但现在我想渲染模板的字符串 即模板的内容 这就说得通了 但我现在不想解释原因 如何简单地渲染模板的文本 您可以使用render template string http
  • 什么是滑动窗口算法?例子?

    在解决几何问题时 我遇到了一种称为滑动窗口算法的方法 确实找不到任何学习材料 详细信息 该算法是关于什么的 我认为它更多的是一种技术而不是算法 这是一种可用于各种算法的技术 我认为通过以下示例可以最好地理解该技术 想象一下我们有这个数组 5
  • 更改 div 与背景图像之间的 Flex 间距

    hi i am remaking the google chrome home page but i cant seem to do the part at the bottom of the page were the most used
  • typeof 在 IE 中返回“未知”

    我有一个窗口 在关闭之前我会刷新底层页面 if opener typeof opener Refresh undefined opener Refresh 如果我离开原来的打开页面 这段代码会抛出一个 没有权限 error 调试代码发现ty
  • 如何在禁用状态下自定义 mat-form-field

    我正在尝试自定义角度材料 mat form field 我可以使用以下命令自定义下划线边框 ng deep mat form field ripple background color yellow 现在我正在尝试将禁用状态下的下划线边框自
  • 从其他线程访问 VT 数据是否安全?

    从辅助线程更改 Virtual TreeView 数据是否安全 如果是 我应该使用关键部分 甚至是同步方法 吗 我担心当我从另一个线程写入 VT 的数据记录时 主线程同时调用其重绘 并且此刷新将导致同时读取同一记录 我想补充一下 我在应用程
  • 为评估为 true 的 IN 条件元素设置限制

    table t Id price Date 1 30 2021 05 09 1 24 2021 04 26 1 33 2021 04 13 2 36 2021 04 18 3 15 2021 04 04 3 33