对于SQL中的重复值,如何选择最近的重复值

时间:2016-04-04 21:09:30

标签: sql oracle select greatest-n-per-group

在SQL中,我有一个表,其中一列可以有重复的值。如何仅选择最新的重复值?日期分布在一个月以上

这是我当前的代码,没有考虑重复值(注意:COLUMN1是具有重复值的列)

module.exports = function(Model1) {
     var app = require('../../server/server');

     Model1.someMethod = function(args, cb) {
         var Model2 = app.models.Model2;
             [...] 
         }

由于

3 个答案:

答案 0 :(得分:1)

您可以在子查询中使用ROW_NUMBER()函数来识别欺骗并按日期列对其进行排名。我不熟悉oracle但它应该是这样的:

SELECT ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY DATE_COLUMN DESC)

请查看此链接以获取解释: https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm

答案 1 :(得分:1)

您可以使用ROW_NUMBER()分析函数获取column1的每个值的最新行:

SELECT *
FROM   (
  SELECT t.*,
         ROW_NUMBER() OVER ( PARTITION BY column1
                             ORDER BY date_column DESC ) AS rn
  FROM   table_name
)
WHERE  rn = 1;

答案 2 :(得分:1)

我最终以与向我建议的方式不同的方式做到这一点。我基本上创建了一个表,该表被两个不同的表所破坏,一个表具有重复值,另一个表没有。

actionHandler