sql - 在删除语句postgresql中使用partition by子句
问题描述
我正在尝试调试以下代码。它给我一个错误,说 ERROR: syntax error at or near "(" 。
我的目标是删除表中的重复记录
delete FROM (SELECT *,
ROW_NUMBER() OVER (partition BY snapshot,col1,col2,col3,col4,col5) AS rnum
FROM table where snapshot='2019-08-31') as t
WHERE t.rnum > 1;
解决方案
尝试如下
DELETE FROM table a
WHERE a.ctid <> (SELECT min(b.ctid)
FROM table b
WHERE a.snapshot = b.snapshot
and a.col1=b.col1 and a.col2=b.col2);
推荐阅读
- sql - 尝试在使用发票时在 vb.net 中的 btnsubmit_click 函数上显示警告消息
- ansible - 如何根据另一个模式列表减少一个列表?
- javascript - 访问 XMLHttpRequest 已被 CORS 策略阻止
- multidimensional-array - Rust ndarray:将 ArrayD 转换为 Array2
- javascript - 样式化组件中的响应式数组
- dataframe - dask.datasets 在哪里?
- ios - 获得 401 响应代码并重试请求后,使用 URLSession 刷新访问令牌
- php - 与所有视图共享数据 laravel
- python - 为什么在对 df 中的几列进行分组后使用 df_grouped.loc[] 进行切片时出现错误?
- .net - 在 Mac 上从命令行运行 Dotnet F Sharp 编译器