-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
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 回答
1

所以如果PC字段是这样的:sw1 xyz, sw1 yxz, sw1 xyz。我想删除 PC 字段已经重复的所有条目,因此在上面的示例中,它将删除 PC 字段中具有 sw1 xyz 的所有条目,但保留其中一个。

于 2013-06-21T15:31:33.210 回答