使用 PostgreSQL 根据选择查询中的字段删除重复行?

2023-11-22

考虑到表mdl_files包含以下字段:id, contenthash, timecreated, filesize.

该表存储附件文件。

我们认为具有相同内容哈希的所有行都是重复行,我只想保留最旧的行(或者如果日期相等则保留第一行)。 我怎样才能做到这一点?

以下查询:

SELECT
  id,
  contenthash,
  filesize,
  to_timestamp(timecreated) :: DATE
FROM mdl_files
ORDER BY contenthash;

returns:

2480229 00002e87605311feb82b70473b61e81f0223c774    18178   2016-10-05
2997411 0000bfd20ef84948eee6811ce5bbac03de42ccb0    1293    2017-03-31
1304839 000280169fc78d704a2d4569bfb6f42ea4a1d5ae    8203    2015-11-10
1364656 000280169fc78d704a2d4569bfb6f42ea4a1d5ae    8203    2015-11-17
71568   0003c6aec5835964870902d697c06d21abf76bf7    139439  2013-04-19
2959945 000419c19d77df7285e669614075b47414e3ab2c    398 2017-03-20
3483049 00061dc0bc2452304107ddc75e7ee2908c729905    28618   2017-08-17
3483047 00061dc0bc2452304107ddc75e7ee2908c729905    28618   2017-08-17

我想得到这个结果集:

2480229 00002e87605311feb82b70473b61e81f0223c774    18178   2016-10-05
2997411 0000bfd20ef84948eee6811ce5bbac03de42ccb0    1293    2017-03-31
1304839 000280169fc78d704a2d4569bfb6f42ea4a1d5ae    8203    2015-11-10

71568   0003c6aec5835964870902d697c06d21abf76bf7    139439  2013-04-19
2959945 000419c19d77df7285e669614075b47414e3ab2c    398 2017-03-20
3483049 00061dc0bc2452304107ddc75e7ee2908c729905    28618   2017-08-17

我希望从结果集中删除以下重复行:

1364656 000280169fc78d704a2d4569bfb6f42ea4a1d5ae    8203    2015-11-17
3483047 00061dc0bc2452304107ddc75e7ee2908c729905    28618   2017-08-17

Use DISTINCT ON:

SELECT DISTINCT ON (contenthash)
  id,
  contenthash,
  filesize,
  to_timestamp(timecreated) :: DATE
FROM mdl_files
ORDER BY contenthash, timecreated, id;

DISTINCT ON是一个 Postgres 扩展,它确保为括号中键的每个唯一组合返回一行。特定行是根据以下内容找到的第一行order by clause.

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

使用 PostgreSQL 根据选择查询中的字段删除重复行? 的相关文章

  • MySql如何通过过滤多列来限制多个数字?

    我想从数据库中获取 4 个不同类别的 50 个问题 我想要 4 个不同类别中每个类别的不同数量的问题 我的结果集必须包含第一类 12 个问题 第二类 20 个问题 第三类 10 个问题和第四类 8 个问题 我的问题表中总共有 50 个问题
  • 如何在 psycopg2 线程连接类中重新连接到 postgreSQL? SSL SYSCALL 错误导致的失败:在 Azure 中检测到 EOF?

    我们的应用程序运行良好 直到我们将 PostgreSQL 移植到 Azure 中的 Microsoft 数据库 然后 我们的应用程序会定期无故失败 并且到处都会出现 SSL SYSCALL 错误 删除等 我们已经尝试了互联网上描述的所有内容
  • MySQL:你能指定一个随机限制吗?

    有没有办法在 SQL MySQL 中随机化限制数字 我希望能够做的是在查询中获取随机数量的结果以在插入子查询中使用 而无需任何服务器端脚本 我希望能够作为假设说明运行的查询是 SELECT id FROM users ORDER BY RA
  • 返回行位置 - Postgres

    我返回一个带有位置的表 select from select row number over as position from organization result where data1 Hello 返回这个 这是正确的 data1 H
  • 如何在SQL Server数据库表列中存储图像[重复]

    这个问题在这里已经有答案了 我有一张名为FEMALE在我的数据库中 它有ID as Primary Key 它有一个Image column 我的问题是如何使用 SQL 查询存储图像 尝试一下 insert into tableName I
  • Postgresql 中的 id 列位置重要吗?

    我正在测试删除主键列 id 的迁移 我想使用外键作为主键 当我运行并恢复迁移时 我看到表的状态是相同的 只是 id 列现在是最后一个 它会以任何方式改变我的数据库的行为吗 我是否应该费心去恢复迁移恢复代码中的列顺序 理论上一切都应该没问题
  • MySQL 子查询返回多行

    我正在执行这个查询 SELECT voterfile county Name voterfile precienct PREC ID voterfile precienct Name COUNT SELECT voterfile voter
  • 获取查询的行号

    我有一个查询将返回一行 当表排序时 有什么方法可以找到我正在查询的行的行索引吗 我试过了rowid但当我期待第 7 行时却得到了 582 Eg CategoryID Name I9GDS720K4 CatA LPQTOR25XR CatB
  • 从存储过程中的动态 SQL 获取结果

    我正在编写一个存储过程 需要在过程中动态构造 SQL 语句以引用传入的表名称 我需要让这个 SQL 语句返回一个结果 然后我可以在整个过程的其余部分中使用该结果 我尝试过使用临时表和所有内容 但我不断收到一条消息 提示我需要声明变量等 例如
  • SQL Server 查询结果集的大小

    SQL Server 中是否有确定结果集中 Mgmt Studio 查询中返回的数据大小 以 MEGS 为单位 您可以打开客户端统计信息 查询菜单 包括客户端统计信息 它给出执行查询时从服务器返回的字节数
  • 在 postgresql 9.4 或 9.5 中查询 json 对象的嵌套数组中的元素

    studentID 1 StudentName jhon Data schoolname school1 enrolmentInfo year 2015 info courseID csc213 school IT enrollmentda
  • 是否允许在流水线 PL/SQL 表函数中使用 SELECT?

    管道函数的文档指出 在 SQL 语句 通常是SELECT 并且在大多数示例中 管道函数用于数据生成或转换 接受客户作为参数 但不发出任何 DML 语句 现在 从技术上讲 可以使用 SELECT 而不会出现 Oracle 中的任何错误 ORA
  • pq:无法调整共享内存段的大小。设备上没有剩余空间

    我在仪表板上有许多面板 数量约为 6 个 用于显示数据点图表 对 PostgreSQL 数据库的 Dockerized 实例进行查询 直到最近 面板都工作正常 有些面板停止工作并报告如下错误 pq 无法将共享内存段 PostgreSQL 2
  • SQL - 为每条记录调用存储过程

    我正在寻找一种方法来为 select 语句的每条记录调用存储过程 SELECT SomeIds SELECT spro Id FROM SomeTable as spro INNER JOIN Address addr ON addr Id
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • SQL Server 转换选择一列并将其转换为字符串

    是否可以编写一条从表中选择列并将结果转换为字符串的语句 理想情况下 我希望有逗号分隔的值 例如 假设 SELECT 语句看起来像这样 SELECT column FROM table WHERE column lt 10 结果是一列包含值的
  • 更新plpgsql中触发器函数中的多列

    给出以下架构 create table account type a id SERIAL UNIQUE PRIMARY KEY some column VARCHAR create table account type b id SERIA
  • 累计非重复计数

    我正在查询每天获取 uid 的累计不同计数 示例 假设有 2 个 uid 100 200 出现在日期 2016 11 01 并且它们也在第二天出现 新的 uid 300 100 200 300 出现在 2016 11 02 此时我希望商店累
  • 案例陈述以确定我是否应该结合

    我目前想做某种条件联合 给出以下示例 SELECT age name FROM users UNION SELECT 25 AS age Betty AS name 假设我只想在 用户 计数 gt 2 时合并第二个语句 否则不合并两者 总之
  • 从一个sql服务器选择到另一个sql服务器?

    我想将一台服务器 Data Old S1 中的一个表 T1 在 DB1 中 中的数据选择到另一台服务器 Data Latest S2 中的另一个表 T2 在 DB2 中 中的数据 我怎样才能做到这一点 请注意服务器的命名方式 查询也应该考虑

随机推荐

  • 如何在 Bash 中比较点分隔版本格式的两个字符串?

    有没有办法在 bash 上比较这些字符串 例如 2 4 5 and 2 8 and 2 4 5 1 这是一个纯 Bash 版本 不需要任何外部实用程序 bin bash vercomp if 1 2 then return 0 fi loc
  • 在 R 中将 CSV 读取为 data.frame

    我是 R 新手 正在尝试读取 csv 文档显示了一个函数read csv 但是 当我读取文件并检查变量的类型时 它会显示一个列表 文档将其显示为data frame 有人可以解释为什么会这样吗 到目前为止我的代码 mytable lt re
  • 移动设备放大 Google Apps 脚本

    我在 GAS 中制作了一个 400 像素宽的网络应用程序 我希望在加载时缩放以填充移动设备的屏幕 而不是只填充一半屏幕 尽管仍然使用固定的像素宽度 我尝试使用下面的视口代码但没有成功 Google 最近几个月解决了这个问题 并使用 addM
  • OpenSSL 静态库太大,有什么替代方法或方法可以减小其大小?

    我已经使用了 OpenSSL 1 0 的预构建静态库 但它使我的二进制文件太大 在发布模式下将其大小增加了约 800Kb 我不需要 OpenSSL 的大部分功能 例如 BIO 我使用自己的套接字 因此在代码中我只使用几个 SSL XXXXX
  • 如何防止ggplot2中的轴相交

    我正在使用 ggplot2 制作一些对数转换数据的线图 这些数据都有很大的值 在 10 6 和 10 8 之间 由于轴不是从零开始 我不想让它们在 原点 相交 以下是轴当前的样子 我更喜欢从基础图形中获得的东西 但我另外使用geom rib
  • 3D 中两个矩形之间的交集

    为了获得 3D 中两个矩形之间的交线 我将它们转换为平面 然后使用法线的叉积获得交线 然后尝试获得与矩形的每个线段的线交点 问题是这条线平行于三段 并且只与 NAN NAN NAN 中的一条相交 这是完全错误的 你能告诉我我的代码有什么问题
  • TabLayout 的选项卡未显示

    我有一个主要活动 它托管一个片段 该片段又托管一个 TabLayout 带有 ViewPager 显示选项卡栏 但不显示选项卡本身 这是我在主要活动中用于显示主机片段的代码 Fragment fragment new BMITabsFrag
  • 应用程序更新时的警报管理器[重复]

    这个问题在这里已经有答案了 我正在开发一个使用的应用程序AlarmManager对于某些进程 我想问一下我是否在 Playstore 上更新我的应用程序 更新而不是新安装 注册的警报会被取消吗 还将值SharedPreference重置 A
  • 如何从 python 中的 RFC 2822 邮件标头中提取多个电子邮件地址?

    蟒蛇的email模块非常适合解析标头 但是 那To header可以有多个接收者 并且可能有多个To 标头 那么如何拆分每个电子邮件地址呢 我不能用逗号分隔 因为逗号可以被引用 有没有办法做到这一点 演示代码 msg To email pr
  • 在内容脚本中使用 chrome.tabs 或其他 chrome API 时,“无法读取未定义的属性”

    chrome tabs尽管我在权限块中设置了选项卡 但仍返回未定义 permissions tabs http https content scripts matches http https js js myScript js all f
  • custom_require.rb:36:in `require': 没有要加载的文件 -- myapp(LoadError)

    我收到上述错误 我所做的就是安装 rvm 并从 Mac 获得的默认 ruby 更新到 ruby 1 9 2 我的所有宝石都出现在宝石列表中 但我需要在某处指定路径吗 cheers glenno 检查您是否安装了 gemgem list如果没
  • 防止Bootstrap崩溃崩溃

    我有一个 Bootstrap 折叠 标题内有一个按钮 按钮上有clickEvent 我想防止单击按钮时发生崩溃事件 有人有提示吗 这在这里没有帮助 buttonId live click function e e preventDefaul
  • NumPy 中是否提供十进制“dtypes”?

    是十进制数据类型对象 dtypes 在 NumPy 中可用吗 gt gt gt import decimal numpy gt gt gt d decimal Decimal 1 1 gt gt gt s 123 123 23 2323 2
  • 如何在 Flutter 中使用 SQFlite 进行数据库插入

    如何使用 SQFlite 插件将数据插入 Flutter 数据库 有很多解决问题的问题 但我找不到一个可以添加规范答案的问题 我的回答如下 添加依赖项 Open pubspec yaml并在依赖项部分添加以下行 sqflite 1 0 0
  • 检测html5移动设备中的晃动

    我目前正在 html5 中构建一个 Web 应用程序 它需要能够检测用户何时摇动手机以及摇动手机的速度 我一直在浏览 但似乎找不到任何如何实现这一点的示例 我知道html5有一个加速度计可以检测手机的方向 但是它如何检测用户摇动手机的速度呢
  • CSS:如果背景图像大于窗口,则缩小背景图像,否则保持 100%

    我想在我的网站正文中部署一个背景图像 该图像会随着窗口分辨率的变化而缩小 但不会放大到超出其原始尺寸 1920x1080 这样 分辨率较小的用户仍然可以看到整个图像 但分辨率更高的用户就不会看到丑陋的放大背景 它看起来不像背景图像支持像 m
  • 使用 mongoose api 和 nodejs 搜索数据库?

    我正在使用nodejs和mongoose构建一个api 我正在尝试执行搜索功能 但它似乎无法查询任何内容 即代码 app get search function req res return Questions find text nood
  • 限制列表(Of T)的大小 - VB.NET

    我试图限制通用列表的大小 以便在它包含一定数量的值后 它不会再添加任何值 我尝试使用 List 对象的 Capacity 属性来执行此操作 但这似乎不起作用 Dim slotDates As New List Of Date slotDat
  • 字符串小数点后 3 位

    实施例1 Dim myStr As String 38 我希望我的结果是38 000 实施例2 myStr 6 4 我希望我的结果是6 400 实现这一目标的最佳方法是什么 我想格式化一个string变量至少有小数点后三位 places U
  • 使用 PostgreSQL 根据选择查询中的字段删除重复行?

    考虑到表mdl files包含以下字段 id contenthash timecreated filesize 该表存储附件文件 我们认为具有相同内容哈希的所有行都是重复行 我只想保留最旧的行 或者如果日期相等则保留第一行 我怎样才能做到这