在 PostgreSQL 中,我们可以使用窗口函数和子查询来比较多列以检查列是否重复。下面是一个使用窗口函数的示例代码:
SELECT column1, column2, column3
FROM (
SELECT column1, column2, column3, COUNT(*) OVER (PARTITION BY column1, column2, column3) AS count
FROM your_table
) subquery
WHERE count > 1;
在这个示例中,我们首先在子查询中使用窗口函数 COUNT(*) OVER (PARTITION BY column1, column2, column3) 来计算每个组合的列值的数量。然后,我们在外部查询中选择所有 count 值大于 1 的行,也就是重复的行。
另一种方法是使用子查询和 GROUP BY 子句来比较多列以检查列是否重复。下面是一个使用子查询和 GROUP BY 的示例代码:
SELECT column1, column2, column3
FROM your_table
WHERE (column1, column2, column3) IN (
SELECT column1, column2, column3
FROM your_table
GROUP BY column1, column2, column3
HAVING COUNT(*) > 1
);
在这个示例中,我们首先在子查询中使用 GROUP BY 和 HAVING COUNT(*) > 1 来选择重复的组合的列值。然后,我们在外部查询中选择所有在子查询中返回的行。
无论使用哪种方法,上述代码示例都可以用于比较多列以检查列是否重复。