【问题标题】:How to remove repeated add log from table?如何从表中删除重复的添加日志?
【发布时间】:2014-03-03 10:40:18
【问题描述】:

我有一个日志表,其中多行已包含在 ADD 状态中(“status = 0”表示“添加”)。

如何去除status = 0但它必须是不重复的值。例如,每个事务 id (tid) 必须只有一个值 status = 0

例如;

id tid       tblname           type     status 
1   101     x                   U              0
2   101     x                   U              0
3   102     x                   U              0
4   102     x                   U              0
5   102     x                   U              0

必须返回:

id  tid     tblname       type           status 
1   101     x            U              0
3   102     x            U              0

我该怎么做?

【问题讨论】:

标签: sql sql-server tsql duplicate-removal


【解决方案1】:

带有 cte 和 ROW_NUMBER:

WITH x AS (SELECT rn = Row_number() 
                       OVER( 
                         partition BY tid 
                         ORDER BY id) 
         FROM   dbo.log
         WHERE  status = 0 
                AND tblname = 'X' 
                AND type = 'U') 
DELETE FROM  x 
WHERE  rn > 1 

【讨论】:

    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多