2

複数の行が 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

どうやってやるの?

4

1 に答える 1

2

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 
于 2013-01-31T12:11:04.757 に答える