-1

私は現在これを持っています:

DELETE FROM t
FROM (
    SELECT 
          *
        , rn = ROW_NUMBER() OVER (
                    PARTITION BY Street, CAST(PC AS CHAR(4)) 
                    ORDER BY CAST(PC AS CHAR(4)) 
            )
    FROM Locals where DATALENGTH(PC) < 13
) t 
WHERE rn > 1

PCしかし、列が同じ場合にのみ削除したいです。

4

2 に答える 2

1

したがって、PC フィールドが次のような場合: sw1 xyz、sw1 yxz、sw1 xyz。PC フィールドが既に複製されているすべてのエントリを削除したいので、上記の例では、PC フィールドに sw1 xyz があるすべてのエントリを削除しますが、そのうちの 1 つを保持します。

于 2013-06-21T15:31:33.210 に答える
1
DELETE t
FROM (
      SELECT rn = ROW_NUMBER() OVER (PARTITION BY PC ORDER BY PC)
      FROM Locals 
      WHERE DATALENGTH(PC) < 13
      ) t
WHERE t.rn > 1

SQLFiddle の例を参照してください

于 2013-06-23T22:28:56.433 に答える