在SQL中,我有一个表,其中一列可以有重复的值。如何仅选择最新的重复值?日期分布在一个月以上
这是我当前的代码,没有考虑重复值(注意:COLUMN1是具有重复值的列)
module.exports = function(Model1) {
var app = require('../../server/server');
Model1.someMethod = function(args, cb) {
var Model2 = app.models.Model2;
[...]
}
由于
答案 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