表 - 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
5 回答
检查一下 .
在col2和col3上应用distinct,因为你希望它们是唯一的,并通过desc保持最新的顺序
如果您只想选择获得预期的输出,那么
ROW_NUMBER
会派上用场:如果您想要删除其他记录,那么我们也可以重用CTE:
你可以尝试这样的事情 .
因此,如果您想删除其他记录,您可以使用它 .
DEMO
如果要为任何{col2,col3}抑制除最新行之外的所有行:
如果要物理删除同一{col2,col3}的除最近行之外的所有行:
这是最快的方法:
如果你想删除: