sql - Pgsql删除某些列(不是全部)重复的行

标签 sql postgresql

表 - col_pk、col1、col2、col3、col4、col_date_updated

此表的某些行的 col2 和 col3 列值重复。 我想保留那些 col_date_updated 为最新(最大)的行。

例如:

col_pk, col1, col2,  col3, col4,   col_date_updated
1,      A,    hello, now,  200.00, 2017-12-12 15:09:44.437546
2,      B,    hello, now,  490.00, 2017-12-12 15:09:42.437065
3,      C,    hi,    now,  300.00, 2017-12-12 15:09:41.436617
4,      D,    hello, now,  250.00, 2017-12-12 15:09:45.436617
5,      E,    hi,    now,  250.00, 2017-12-12 10:09:41.436617

预期结果:

col_pk, col1, col2,  col3, col4,   col_date_updated
3,      C,    hi,    now,  300.00, 2017-12-12 15:09:41.436617
4,      D,    hello, now,  250.00, 2017-12-12 15:09:45.436617

最佳答案

检查这个。

SELECT DISTINCT ON (col2, col3) t.*
FROM table t
ORDER BY col_date_updated DESC

在 col2 和 col3 上应用 distinct 因为你希望它们是唯一的并且保持最新的按 desc 排序

关于sql - Pgsql删除某些列(不是全部)重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48058652/

相关文章:

mysql - 成员和组表

sql - Oracle 11g - 为什么 SELECT COUNT(*) 比 SELECT * 慢无限?

postgresql - 为什么postgresql中template0 DB的事务年龄会增加

sql - 根据位置将数组中的元素相乘

postgresql - pg_relation_size 告诉我列不存在

sql - 将 JSON 扩展为以第一行为模板的列

php - php中使用mysql的多语言实现

SQL将行中的不同项转换为列

mysql - 在第一个表的字段或第二个表的字段中使用 WHERE 进行左连接

postgresql - 使用 psql 数组将 pq 迁移到 pgx 的问题